【发布时间】:2016-01-04 23:29:24
【问题描述】:
我正在尝试在 AngularJS 数组上使用 JavaScript 的 find() 函数。这是合法的,对吧……?
这个非常简单的代码给我带来了一些问题。就是说$scope.names.find(name1)的返回值不是函数。
TypeError: Name1 is not a function
if($scope.names.find(name1) !== name1) {
$scope.names.push(name1);
}
我也试过了……
if($scope.names.find(name1) === undefined) {
$scope.names.push(name1);
}
和
if(!$scope.names.find(name1)) {
$scope.names.push(name1);
}
这个if 处于循环中。如果name 不在数组中,则添加它。如果已经在数组中,则不要添加。
这是循环:
angular.forEach($scope.names1, function (name1) {
angular.forEach($scope.names2, function (name2) {
if (name1 === name2) {
$scope.names.push(name1);
}
});
if ($scope.names.find(name1) === name1) {
$scope.names.push(name1);
}
});
我不知道错误到底指的是什么。我一定是误用了find()。
【问题讨论】:
-
如您在文档中看到的
find将回调函数作为参数,使用if (!$scope.names.find(function (name1) { $scope.names.push(name1); }) } -
不,这是说
name1不是函数。 -
TypeError: name1 is not a function因为.find接受一个回调函数并在数组项上执行它,并返回满足回调函数的项的值。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… -
@DaveNewton 错误是不言自明的,它说传递的参数不是函数,这意味着参数应该是函数
-
@Tushar 这正是我所说的。
标签: javascript arrays angularjs