Array.find(value)返回值'不是函数'

时间:2015-10-07 16:06:31

标签: javascript arrays angularjs

我正在尝试在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()

2 个答案:

答案 0 :(得分:4)

您需要使用indexOf。你的代码片段是

if($scope.names.indexOf(name1) < 0) { //Value not exists in your array
   $scope.names.push(name1);
}

答案 1 :(得分:0)

或者,考虑使用underscore.js有很多有用的功能,包括_.find()