Javascript 将对象与json中的对象进行比较,如果它们相同或不相同,则返回

Javascript 将对象与json中的对象进行比较,如果它们相同或不相同,则返回,javascript,jquery,json,object,ecmascript-6,Javascript,Jquery,Json,Object,Ecmascript 6,我想将填写表单得到的结果与json返回的属性进行比较 我不知道该怎么过去 这就是我到目前为止所做的: $('#btn').on('click', function() { let $inputs = $('#new_form :input'); let new_vals = {}; $inputs.each(function() { new_form[this.id] = $(this).val(); }); console.log(ne

我想将填写表单得到的结果与json返回的属性进行比较

我不知道该怎么过去

这就是我到目前为止所做的:

$('#btn').on('click', function() {
    let $inputs = $('#new_form :input');
    let new_vals = {};
    $inputs.each(function() {
        new_form[this.id] = $(this).val();
    });

    console.log(new_vals);
    $.getJSON(api, function(data) {
        data.forEach(d => {
            console.log(d.values);
        });
    });
});
My console.log()用于
新VAL
{开始日期:“2019-12-25”,结束日期:“2020-04-15”}

用于
d.values
的my console.log():

{start_date: "2020-01-01", end_date: "2020-03-15"}
{start_date: "2020-01-01", end_date: "2020-03-15"}
{start_date: "2019-12-25", end_date: "2020-04-15"}
{start_date: "2020-03-20", end_date: "2020-03-31"}
{start_date: "2019-10-01", end_date: "2020-03-31"}
{start_date: "2019-10-01", end_date: "2020-03-31"}
{start_date: "2020-01-01", end_date: "2020-01-31"}
{start_date: "2020-01-19", end_date: "2020-01-25"}
我想将
start\u date
end\u date
d.values
中的属性进行比较,并返回匹配的属性

我希望从上述比较中返回第三个值(
{start_date:“2019-12-25”,end_date:“2020-04-15”}


我该怎么做?

您只需检查
getJSON
中的两个值即可

 $.getJSON(api, function (data) {
  data.forEach((d) => {
    if(d.values["start_date"] === new_vals["start_date"] && d.values["end_date"] === new_vals["end_date"]) {
      console.log(d.values);
    }
  });
 });
另一种办法:

isEqualObj = (obj1, obj2) => {
    if(Object.keys(obj1).length !== Object.keys(obj2).length) return false;
    for(key of Object.keys(obj1)) {
        if(obj1[key] !== obj2[key]) return false;
    }
    return true;
}
 $.getJSON(api, function (data) {
  data.forEach((d) => {
    if(isEqualObj(d.values, new_vals)) {
      console.log(d.values);
    }
  });
 });

只需检查
getJSON
中的两个值即可

 $.getJSON(api, function (data) {
  data.forEach((d) => {
    if(d.values["start_date"] === new_vals["start_date"] && d.values["end_date"] === new_vals["end_date"]) {
      console.log(d.values);
    }
  });
 });
另一种办法:

isEqualObj = (obj1, obj2) => {
    if(Object.keys(obj1).length !== Object.keys(obj2).length) return false;
    for(key of Object.keys(obj1)) {
        if(obj1[key] !== obj2[key]) return false;
    }
    return true;
}
 $.getJSON(api, function (data) {
  data.forEach((d) => {
    if(isEqualObj(d.values, new_vals)) {
      console.log(d.values);
    }
  });
 });

请尝试此d.values.filter(ob=>ob.start\u date===new\u vals.start\u date&&ob.end\u date==new\u vals.end\u date);这个问题中没有JSON。只有对象和对象数组。JSON是一种文本格式,类似于CSV。这是否回答了您的问题@HereticMonkey,不是真的,上面的d.values来自forEachI,我想比较getJSON中的值,如果它们匹配,我想用类似的值调出一个模式,如果不做其他事情,请尝试这个d.values.filter(ob=>ob.start\u date==new\u vals.start\u date&&ob.end\u date==new\u vals.end\u date);这个问题中没有JSON。只有对象和对象数组。JSON是一种文本格式,类似于CSV。这是否回答了您的问题@HereticMonkey,不是真的,上面的d.values来自forEachI,我想比较getJSON中的值,如果它们匹配,我想用类似的值调出一个模式,如果不做其他事情,我可以在不提及键名的情况下进行比较吗?我可以在不提及键名的情况下进行比较吗?