如何将Javascript对象的内容复制到空对象中

How can I copy the contents of a Javascript object to an empty one?

本文关键字:对象 复制 Javascript      更新时间:2023-09-26

我有一个Javascript对象(从数据库返回的JSON)用于Angular站点:

[{'widget_id':'1','widget_name':'Blue Widget','widget_description':'A nice blue widget','widget_discount':'20'},{'widget_id':'2','widget_name':'Red Widget','widget_description':'A fantastic red widget','widget_discount':'0'}]

我想在使用这些信息之前先处理一下,比如说我想更改折扣或执行一些其他操作。因此,我想创建一个新对象,遍历我的JSON,并将JSON对象中的某些值写入新的空白对象。

目前,我正试图在我的Angular控制器中测试将一个值从旧数组复制到新数组:

WidgetSvc.fetchWidgets().success(function(response){
            var rawWidgets = response
            var widgetsOutput = {}
            for (var i in rawWidgets){
              widgetsOutput[i].widget_id = rawWidgets[i].widget_id
            }

但这会抛出一个cannot set property 'widget_id' of undefined错误。我怀疑我没有正确初始化新对象。

我做错了什么?

您只是忘记在设置属性之前设置嵌套对象:

var rawWidgets = [{'widget_id':'1','widget_name':'Blue Widget','widget_description':'A nice blue widget','widget_discount':'20'},{'widget_id':'2','widget_name':'Red Widget','widget_description':'A fantastic red widget','widget_discount':'0'}];
var widgetsOutput = {}
for (var i in rawWidgets){
    widgetsOutput[i] = {}
    widgetsOutput[i].widget_id = rawWidgets[i].widget_id
}
console.log(widgetsOutput)

JSON!=Javascript对象。您可以JSON.parse()将您的JSON转换为一个合适的Javascript对象:

WidgetSvc.fetchWidgets().success(function(response){
        var data = JSON.parse(response);
        // now you can do
        data[0].widget_discount = 10;
 }