我想制作对象的选项卡,并使用for循环将另一个对象的值传递给这个选项卡。我的对象标签:
data4 = [{meal_id : '' ,amount : '' }]
循环:
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:对不起我的语言能力,希望你能听懂。
您对$scope.mealsList
的长度进行迭代,但从data4中获取值。如果它们的长度不相同(这似乎是问题所在),那么在取消引用data[i]
时,您将得到未定义。
我不太确定你想做什么,但似乎你想将$scope.mealsList修改为data4,因为你要替换data4的所有值。
在这种情况下,您只需将mealsList中的值修改为您想要的值,并将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;
}
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])
}