我正在尝试从数组二中过滤数组一的值。但我没有得到这三个值。我只需要具有唯一 id 的对象。
我需要 { id: 28 ,name: "sdfsdf"} .. 仅此
我现在正在尝试这个。但到达那里。有什么帮助吗?
var arr1 = [
{
id : { oid : 23 },
name : "nahid"
} ,
{
id : { oid : 24 },
name : "nahidsdsd"
} ,
{
id : { oid : 26 },
name : "nahidtytuyu"
} ,
]
var arr2 = [
{
id : { oid : 23 },
name : "nahid"
} ,
{
id : { oid : 24 },
name : "nahidsdsd"
} ,
{
id : { oid : 26 },
name : "nahidtytuyu"
} ,
{
id : { oid : 28 },
name : "nahidtytuyu"
} ,
]
var res = arr2.filter( data => {
var temp;
arr1.map( data2 => {
temp = data2;
} )
return temp.id.oid != data.id.oid
} )
console.log(res)
(3) [{…}, {…}, {…}] 0 : {id: {…}, name: "nahid"} 1 : {id: {…}, name: "nahidsdsd"} 2 : {id: {…}, name: "nahidtytuyu"} length : 3
最佳答案
这是您需要的答案,
var arr1 = [
{
id : { oid : 23 },
name : "nahid"
} ,
{
id : { oid : 24 },
name : "nahidsdsd"
} ,
{
id : { oid : 26 },
name : "nahidtytuyu"
} ,
]
var arr2 = [
{
id : { oid : 23 },
name : "nahid"
} ,
{
id : { oid : 24 },
name : "nahidsdsd"
} ,
{
id : { oid : 26 },
name : "nahidtytuyu"
} ,
{
id : { oid : 28 },
name : "nahidtytuyu"
} ,
]
function difference(otherArray){
return function(current){
return otherArray.filter(function(other){
return other.id.oid == current.id.oid
}).length == 0;
}
}
var onlyInA = arr1.filter(difference(arr2));
var onlyInB = arr2.filter(difference(arr1));
result = onlyInA.concat(onlyInB);
console.log(result)
请运行上面的代码并检查控制台
关于javascript - JS 过滤两个对象数组。没有得到独一无二的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49753692/