【问题标题】:Compare object to objects in json and return if they are same of not将对象与 json 中的对象进行比较,如果它们相同则返回
【发布时间】:2020-09-08 04:46:50
【问题描述】:

我想将填写表单返回的结果与从 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);
        });
    });
});

new_vals 的我的 console.log():{start_date: "2019-12-25", end_date: "2020-04-15"}

d.values 的我的 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_date end_dated.values 中的属性进行比较,并希望返回匹配的属性。

我希望从上面的比较中返回第三个值 ({start_date: "2019-12-25", end_date: "2020-04-15"})。

我该怎么做?

【问题讨论】:

  • 请试试这个 d.values.filter(ob => ob.start_date === new_vals.start_date && ob.end_date === new_vals.end_date);
  • 这个问题没有 JSON。只有对象和对象数组。 JSON 是一种文本格式,例如 CSV。
  • @HereticMonkey,不是真的,上面的d.values来自forEach
  • 我想比较 getJSON 中的值,如果它们匹配,我想拉出一个具有相似值的模式,如果不做其他事情

标签: javascript jquery json object ecmascript-6


【解决方案1】:

您可以简单地检查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);
    }
  });
 });

【讨论】:

  • 我可以在不提及键名的情况下进行比较吗?
猜你喜欢
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
相关资源
最近更新 更多