【发布时间】:2016-10-05 13:18:26
【问题描述】:
我想将数据发送到没有现有数据的数组。这里是 代码。
result.then(function (speaker) { //getting response from the modal
var speakerdatanew = {_id: speaker._id, name: speaker.name, email: speaker.email};
if ($scope.speakerdata.indexOf(speakerdatanew._id) === -1) {
$scope.speakerdata.push(speakerdatanew);
console.log($scope.speakerdata);
} else {
alert("You have already added speaker");
}
});
它不断地多次添加相同的数据。
【问题讨论】:
-
所以,对象数组中_id的索引总是不存在的。您正在将 _id 与对象进行比较;那是行不通的。
-
您不能使用 indexOf 检查具有多个属性的对象。而是迭代 $scope.speakerdata 并对迭代的第 i 个元素进行相同的检查。
-
如果数组是一个对象数组,那么只有传递
indexOf一个对象才有意义。如果您传递indexOf对数组中某个项目的引用,它将找到它。它不能是数组中 like 的对象,它必须是对数组中实际对象的引用。你可能想要Array#some。Array#find是另一个选择,如果你知道用户有一个相当新的浏览器。 -
其实我是 Angular 的新手,你能详细说明一下吗? @Angular_10
-
我建议你使用 lodash 或 underscorejs
标签: javascript angularjs