Javascript 如何过滤具有不同键的对象数组的结果

Javascript 如何过滤具有不同键的对象数组的结果,javascript,ecmascript-6,Javascript,Ecmascript 6,如何通过比较值来获得具有不同键的对象数组的差异 常量数组1=[{ 名称:"宝马",, 类型:“汽车” }] 常数数组2=[{ 年份:“2020年”, 卡尔纳姆:“宝马”, 车型:“SUV”, 价值:“汽车” }, { 年份:2019年, 卡纳姆:“奔驰”, 型号:"轿车",, 价值:“汽车” }, { 年份:“2018年”, 卡纳姆:“奥迪”, 车型:“Coupe”, 价值:“汽车” } ] const result=array1.filter( ({ 汽车:id1 }) => !好的(({

如何通过比较值来获得具有不同键的对象数组的差异

常量数组1=[{
名称:"宝马",,
类型:“汽车”
}]
常数数组2=[{
年份:“2020年”,
卡尔纳姆:“宝马”,
车型:“SUV”,
价值:“汽车”
},
{
年份:2019年,
卡纳姆:“奔驰”,
型号:"轿车",,
价值:“汽车”
},
{
年份:“2018年”,
卡纳姆:“奥迪”,
车型:“Coupe”,
价值:“汽车”
}
]
const result=array1.filter(
({
汽车:id1
}) =>
!好的(({
卡纳姆:id2
})=>id2==id1)
);

log('Result',Result)
您的代码中有一个输入错误。使用与
name
carName
的比较,而不是
carName
carName
。此代码应适用于:

array2.filter(({carName}) => !array1.some(({name}) => name === carName));

你的代码有一个输入错误。使用与
name
carName
的比较,而不是
carName
carName
。此代码应适用于:

array2.filter(({carName}) => !array1.some(({name}) => name === carName));

您只需将
名称
carName
进行比较

const array1=[{name:'BMW',type:'car'}],
array2=[{年份:'2020',卡纳姆:'BMW',车型:'SUV',价值:'car'},{年份:'2019',卡纳姆:'Benz',车型:'Sedan',价值:'car'},{年份:'2018',卡纳姆:'Audi',车型:'Coupe',价值:'car'}],
result=array2.filter(o=>!array1.some({name}=>name==o.carName));

log('Result',Result)
您只需将
名称
carName
进行比较

const array1=[{name:'BMW',type:'car'}],
array2=[{年份:'2020',卡纳姆:'BMW',车型:'SUV',价值:'car'},{年份:'2019',卡纳姆:'Benz',车型:'Sedan',价值:'car'},{年份:'2018',卡纳姆:'Audi',车型:'Coupe',价值:'car'}],
result=array2.filter(o=>!array1.some({name}=>name==o.carName));

log('Result',Result)
您可以通过比较数组2的
名称
carName
属性来过滤掉它。这将为您提供
array2
中不在
array1
常量数组1=[{
名称:"宝马",,
类型:“汽车”
}]
常数数组2=[{
年份:“2020年”,
卡尔纳姆:“宝马”,
车型:“SUV”,
价值:“汽车”
},
{
年份:2019年,
卡纳姆:“奔驰”,
型号:"轿车",,
价值:“汽车”
},
{
年份:“2018年”,
卡纳姆:“奥迪”,
车型:“Coupe”,
价值:“汽车”
}
]
var结果=阵列2.过滤器(功能(obj){
return!array1.some(函数(obj2){
返回obj.carName==obj2.name;
});
});

控制台日志(结果)
您可以通过比较array2的
名称
carName
属性来过滤掉它。这将为您提供
array2
中不在
array1
常量数组1=[{
名称:"宝马",,
类型:“汽车”
}]
常数数组2=[{
年份:“2020年”,
卡尔纳姆:“宝马”,
车型:“SUV”,
价值:“汽车”
},
{
年份:2019年,
卡纳姆:“奔驰”,
型号:"轿车",,
价值:“汽车”
},
{
年份:“2018年”,
卡纳姆:“奥迪”,
车型:“Coupe”,
价值:“汽车”
}
]
var结果=阵列2.过滤器(功能(obj){
return!array1.some(函数(obj2){
返回obj.carName==obj2.name;
});
});
控制台日志(结果)
常量数组1=[{
名称:"宝马",,
类型:“汽车”
}]
常数数组2=[{
年份:“2020年”,
卡尔纳姆:“宝马”,
车型:“SUV”,
价值:“汽车”
},
{
年份:2019年,
卡纳姆:“奔驰”,
型号:"轿车",,
价值:“汽车”
},
{
年份:“2018年”,
卡纳姆:“奥迪”,
车型:“Coupe”,
价值:“汽车”
}
]
const result1=array2.filter(值=>array1.some(arr1Val=>arr1Val.name!==
价值(肉身)
console.log('Result',result1)
常量数组1=[{
名称:"宝马",,
类型:“汽车”
}]
常数数组2=[{
年份:“2020年”,
卡尔纳姆:“宝马”,
车型:“SUV”,
价值:“汽车”
},
{
年份:2019年,
卡纳姆:“奔驰”,
型号:"轿车",,
价值:“汽车”
},
{
年份:“2018年”,
卡纳姆:“奥迪”,
车型:“Coupe”,
价值:“汽车”
}
]
const result1=array2.filter(值=>array1.some(arr1Val=>arr1Val.name!==
价值(肉身)

console.log('Result',result1)
Perfect。。如果有人想要比较具有多个关键点的对象。e、 g名称和类型,然后他可以使用!array1.some({name,type})=>name==o.carName&&type==o.value));是的,就是这样。太好了。。如果有人想要比较具有多个关键点的对象。e、 g名称和类型,然后他可以使用!array1.some({name,type})=>name==o.carName&&type==o.value));是的,就是这样。虽然这段代码可以解决OP的问题,但最好包含一个解释,说明您的代码如何解决OP的问题。通过这种方式,未来的访问者可以从您的帖子中学习,并将其应用到自己的代码中。因此,它不是一种编码服务,而是一种知识资源。此外,高质量、完整的答案更有可能被提升。这些特性,以及所有帖子都是独立的要求,是SO作为一个平台的一些优势,使其区别于论坛。您可以编辑以添加其他信息和/或用源文档补充说明。虽然此代码可能解决OP的问题,但最好包含有关代码如何解决OP问题的说明。通过这种方式,未来的访问者可以从您的帖子中学习,并将其应用到自己的代码中。因此,它不是一种编码服务,而是一种知识资源。此外,高质量、完整的答案更有可能被提升。这些特性,以及所有帖子都是独立的要求,是SO作为一个平台的一些优势,使其区别于论坛。您可以编辑以添加其他信息和/或使用源文档补充说明。