数据一次为真时如何返回

时间:2019-01-30 08:42:00

标签: javascript json

我的目的是比较数据并合并。
当我的数据相似时,组合必须返回一些内容。

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]); )
或者您还有其他帮助的方法,请告诉我。

更多示例

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以结合使用someevery来检查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)