[英]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.