繁体   English   中英

在另一个数组中搜索一个数组元素

[英]Search for an array elements in another array

就我而言,我有一个数组对象$scope.folderfiles 我从列表中选择了一些文件,并且希望将所选文件的索引包含在folderfiles 我已经做到了:

for (var i=0; i < $scope.selectedfiles.length; i++) {
    var pos = $scope.folderfiles.indexOf($scope.selectedfiles[i]);
    console.log(pos);
}

但我总是得到-1 当我绑定selectedfiles ,会得到我selectedfiles的列表,该列表包含在我的folderfiles数组中

例:

folderfiles: [{"id":135,"name":"dddd","mtime":1429881529000},{"id":136,"name":"qqq","mtime":1429881566000,"size":null}]

selectedfiles: [{"id":135,"name":"dddd","mtime":1429881529000}]

怎么了 ?

indexOf将检查两个在内存中占据相同空间的对象。 我认为在这种情况下,您想要的是用于相等比较的angular.equals(obj1,obj2)

folderfiles: [{"id":135,"name":"dddd","mtime":1429881529000},{"id":136,"name":"qqq","mtime":1429881566000,"size":null}]

selectedfiles: [{"id":135,"name":"dddd","mtime":1429881529000}]

怎么了 ?

当您将indexOf应用于对象数组时,它会比较对象的引用。

这将工作:

selectedfiles: [folderFiles[0]]

如果您要处理大量的数组逻辑,我建议您使用lodash

_.intersection(selectedFiles, folderFiles).length;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM