只有一些带undercore.js的字段在对象数组之间求交集和等于
Intersection and Equals between arrays of objects by only some fields with underscore.js
我在项目中使用underscore.js,我想比较两个数组,但只比较它们与一个字段的交集。
第一个阵列:
[{item: myObject1, label: myObject1.name, ticked: true, disabled: false}]
第二个阵列:
[{item: myObject1, label: myObject1.name, ticked: false, disabled: false},
{item: myObject2, label: myObject2.name, ticked: true, disabled: false}]
我想通过myObject.id返回这些数组的交集并进行比较:
交叉点:
{item: myObject1, label: myObject1.name, ticked: true, disabled: false}
和
{item: myObject1, label: myObject1.name, ticked: false, disabled: false}
因为myObject1是交集(myObject1.id==myObject1.id)。
- 这些项不相等,因为第一个元素被勾选,第二个不…所以,返回false
我不知道我怎么能用undercore.js.做到这一点
编辑:
只有isEqual函数,我就可以做到这一点(我使用AngularJS):
isIOEquals: function(inputs, outputs){
var editedInputs = [];
var editedOutputs = [];
angular.forEach(outputs, function(outputItem){
angular.forEach(inputs, function(inputItem){
if(_.isEqual(inputItem.item.id, outputItem.item.id)){
editedInputs.push(inputItem);
editedOutputs.push(outputItem);
}
});
});
return _.isEqual(editedInputs, editedOutputs);
}
我相信这能完成任务。
function myIntersection() {
var objectLists = [].slice.call(arguments),
objMapper = objectLists.pop();
var flatLists = objectLists.map(function(lst) {
return lst.map(objMapper);
});
// There will be duplicates in this list, but maybe that's the desired
// behaviour, so I'll leave it to you to sort that out.
var mergedObjectLists = _.flatten(objectLists);
var intersectingValues = _.intersection.apply(null, flatLists);
return mergedObjectLists.filter(function(obj) {
return intersectingValues.indexOf(objMapper(obj)) !== -1
});
}
myIntersection(list1, list2, function(obj) {return obj.item.id});
我很想看到其他方法。
相关文章:
- 在 JavaScript 数组中的所有元素之间穿插元素的简洁方法
- 效率:整数数组的一个子集中两个项之间的最大差值
- 使用Javascript获取两个字符串之间的字符串数组
- 如何将json文件中的数据提取到对象数组中,并在两个控制器之间共享
- 尝试在一个对象的值和一个对象数组之间进行匹配
- 在angularJS中使用模态窗口时,在控制器之间共享对象数组
- 无法在提交之间清空数组
- 使用工厂/服务在控制器AngularJS之间推送数组中的数据
- 数组和ArrayBuffer之间的区别是什么
- 只有一些带undercore.js的字段在对象数组之间求交集和等于
- 如何在数组中循环,等待每个项目之间的时间
- 在数组中的偶数之间插入连字符
- 创建新数组和清除长度之间的差异
- 如何循环数组并保持它们之间的索引增长
- for(数组中的i)和for(var i=0;i<array.length;i++)之间的差异
- 在javascript数组元素之间添加换行符
- 我如何获得 Javascript 中关联数组和常规数组之间的区别
- 如何确定数组中的值是否位于两个附加数组的所有并行索引的值之间
- 数组值和字符串之间的 JavaScript 比较
- AngularJS控制器语法 - 数组和函数版本之间的差异