我有一个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
错误。我怀疑我没有正确初始化新对象。
我做错了什么?
答案 0 :(得分:2)
您只是忘记在设置属性之前设置嵌套对象:
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)
答案 1 :(得分:0)
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;
}