Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何仅验证一个属性的联合数组_Javascript_Arrays_Underscore.js - Fatal编程技术网

Javascript 如何仅验证一个属性的联合数组

Javascript 如何仅验证一个属性的联合数组,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,阵列的连接 我需要运行“连接数组”对象,但我需要删除重复的对象,请参见: 范例 var objArray1 = [ { Id: 1, Name: 'João', Order: 2 }, { Id: 2, Name: 'Pedro', Order: 5 } ]; var objArray2 = [ { Id: 2, Name: 'Pedro', Order: 6 }, { Id: 3, Name: 'Manoel', Order: 9 } ]; 实

阵列的连接

我需要运行“连接数组”对象,但我需要删除重复的对象,请参见:

范例

var objArray1 = [
    { Id: 1, Name: 'João', Order: 2 },
    { Id: 2, Name: 'Pedro', Order: 5 }
];

var objArray2 = [       
    { Id: 2, Name: 'Pedro', Order: 6 },
    { Id: 3, Name: 'Manoel', Order: 9 }
];
实际代码:

var result = _.union(objArray1,objArray2);  
=> [
    { Id: 1, Name: 'João', Order: 2 },
    { Id: 2, Name: 'Pedro', Order: 5 },
    { Id: 2, Name: 'Pedro', Order: 6 },
    { Id: 3, Name: 'Manoel', Order: 9 }
];
我需要这个结果:

[
    { Id: 1, Name: 'João', Order: 2 },
    { Id: 2, Name: 'Pedro', Order: 5 },
    { Id: 3, Name: 'Manoel', Order: 9 } 
];  

基本我需要将数组与筛选器连接一个属性,我需要可以与For连接,但我希望有更好的解决方案

使用下划线
唯一
函数,如下所示

var result = _.uniq(_.union(objArray1, objArray2), false, function(item){ return item.Id; });
无法100%确定
false
是否应为
true


或者,就像流行趋势一样——性感的ES2015版

var result = _.uniq(_.union(objArray1, objArray2), false, item => item.Id);

顺序如何?两个数组都是按id排序的吗?结果是否应该保持顺序?您是否尝试在您的
\uuu.uniq
上使用
\uu.uniq
?是的,这两个都是按顺序排列的ID@DjonatasTenfen补充回答,,请检查它是否有效…我认为您不应该传递
true
,因为
sorted
参数是偶然的-可能不会在其他数据集上工作。谢谢,看起来很棒。您甚至可以删除
.uniq
的最后两个参数,并用字符串“Id”替换,例如
.uniq(jarray1,objArray2),“Id')