JavaScript。检查值是否不在对象数组中

JavaScript。检查值是否不在对象数组中,javascript,arrays,Javascript,Arrays,我有两张单子。一个大一个小。我添加了无限滚动,以保持从较大列表添加到较小列表的项目 // Bigger list (data from DB) var data; // Smaller list $scope.projects = []; $scope.$watch('projectSearch', function (val) { if (typeof val !== 'undefined' && val !== "") { //console.l

我有两张单子。一个大一个小。我添加了无限滚动,以保持从较大列表添加到较小列表的项目

// Bigger list (data from DB)
var data; 
// Smaller list 
$scope.projects = [];

$scope.$watch('projectSearch', function (val) {
    if (typeof val !== 'undefined' && val !== "") {
        //console.log("SEARCH: " + val);
        for (var a = 0; a < data.length; a++) {
            if (data[a].name.toLowerCase().indexOf(val) > -1) {
                console.log("FOUND: " + data[a].name);
                if($scope.projects.indexOf(data[a].name) === -1) {
                    console.log("PUSHED " + data[a].name);
                    $scope.projects.push( data[a]);

                } else {
                    console.log("ALREADY IN " + data[a].name);
                }
            }
        }
    }  
});

$scope.projects
应该是
string
类型,假设
数据[a]。name
是string,那么你的indexOf函数就应该是
$scope。projects
应该是
string
类型,假设
数据[a]。name
是string,那么你的indexOf函数就应该正确地检查
数据[a]
,而不是其属性
名称

if($scope.projects.indexOf(data[a]) === -1) {
    console.log("PUSHED " + data[a].name);
    $scope.projects.push( data[a]);
}

此外,您还可以在复制后删除
数据[a]
,以加快下一步搜索速度您应该检查
数据[a]
,而不是其属性
名称

if($scope.projects.indexOf(data[a]) === -1) {
    console.log("PUSHED " + data[a].name);
    $scope.projects.push( data[a]);
}

此外,您可以在复制后删除
数据[a]
,以加快下一次搜索速度

您没有按
名称
<代码>$scope.projects.push(数据[a].name)我推送对象,这一个工作正常:)您没有推送
名称
<代码>$scope.projects.push(数据[a].name)我推送对象,这个很好:)我只推送包含输入字段中字符的对象。我不检查它是否是字符串。我只从输入字段中推送包含字符的对象。我不检查它是否是字符串。
if($scope.projects.indexOf(data[a]) === -1) {
    console.log("PUSHED " + data[a].name);
    $scope.projects.push( data[a]);
}