我想制作对象的标签,并使用for循环传递给此标签的另一个对象的值。我的对象标签:
data4 = [{meal_id : '' ,amount : '' }]
for循环:
for i in [0...$scope.mealsList.length]
data4[i].meal_id = $scope.mealsList[i].id
data4[i].amount = $scope.mealsList[i].amount
$scope.mealsList
是我要复制的对象选项卡。
现在我有一个错误:
Cannot set property 'meal_id' of undefined
你能告诉我,我做错了什么?
ps:对不起我的语言技能,希望你能理解所有。
答案 0 :(得分:2)
您迭代$scope.mealsList
的长度,但从data4获取值。如果这些长度不同(这似乎是问题),则在解除引用data[i]
时将会得到未定义。
我不太确定你想做什么,但似乎你想将$ scope.mealsList修改为data4,因为你要替换data4的所有值。
在这种情况下,您只需将mealList中的值修改为您想要的值并将data4设置为它。
var result = map($scope.mealsList, function(item) { return { meal_id: item.id, amount: item.amount };});
console.log('mapped: ', result);
data4 = result;
function map(arr, fn) {
var res = [];
for (var i = 0; i < arr.length; ++i) {
res.push(fn(arr[i]));
}
return res;
}
答案 1 :(得分:0)
for i in [0...$scope.mealsList.length]{
//if you want to delete some properties 'prop' form meaList object use this:
//delete $scope.mealsList[i].prop0
//delete $scope.mealsList[i].prop1
data4.push($scope.mealsList[i])
}