我的目的是比较数据并合并。
当我的数据相似时,组合必须返回一些内容。
var data = {"Q1":"Male","Q5":"USA","Q3":"BBB"};
var combine = [{"Q1":"Male","Q5":"USA"},{"Q1":"Male","Q5":"Japan"}];
var num = combine.length;
for (var i = 0; i < num; i++) {
var Keys = Object.keys(combine[i]);
Keys.forEach(function(element) {
if (element.length > 1) {
console.log(element, data[element], combine[i][element]);
if ((data[element] == combine[i][element])) {
console.log("same");
}
}
});
}
您会看到数据有3个,合并有2个,因为我
只想比较Q1,Q5 (remake in var Keys = Object.keys(combine[i]); )
或者您还有其他帮助的方法,请告诉我。
更多示例
答案 0 :(得分:0)
您可以结合使用some
和every
来检查combine
中至少一项是否具有与data
var data = {"Q1":"Male","Q5":"USA","Q3":"BBB"};
var combine = [{"Q1":"Male","Q5":"USA"},{"Q1":"Male","Q5":"Japan"}];
var exists = combine.some(function(c){
const keys = Object.keys(c);
return keys.every(key => c[key] === data[key])
});
console.log(exists ? "same" : "not same")
如果您想从combine
中获得符合条件的第一项,请使用find
而不是some
var data = {"Q1":"Male","Q5":"USA","Q3":"BBB"};
var combine = [{"Q1":"Male","Q5":"USA"},{"Q1":"Male","Q5":"Japan"}];
var match = combine.find(function(c){
const keys = Object.keys(c);
return keys.every(key => c[key] === data[key])
});
console.log(match)