【问题标题】:Check whether key value pair exists in every object of array检查数组的每个对象中是否存在键值对
【发布时间】:2021-02-14 23:37:15
【问题描述】:

我有以下 json 数据:

{
  records:{
          data:{
              current:{
                     records:{
                        '2years':[{a:1, b:2, flag:true},
                                  {a:2, b:4},
                                  {a:3, b:5, flag:true},
                                  {a:4, b:2}]
                     }
              }
          }
  }
}

我有两个对象 flag_true={} 和 flag_false={}

我想遍历“2years”数组并检查每个对象中是否存在flag:true。

如果存在,我想将对象从 2years 数组推送到 flag_true 对象,否则它将进入 flag_false。

最终结果应该是

{
flag_true:[{a:1, b:2, flag:true},
           {a:3, b:5, flag:true}]
flag_false:[{a:2, b:4},
            {a:4, b:2} ]
}

注意

键'current'是动态的,可以是'current'或'previous'

与数组名称相同..它可以是'3years','4years'以及

如何在 javascript 中做到这一点?

请帮忙。提前致谢

【问题讨论】:

  • 您是否尝试过正常循环和if 语句?
  • 到目前为止,您尝试了哪些方法来自行解决此问题?关于如何使用具有动态属性名称的对象已经存在多个问题。
  • 我已经尝试过 Objects.keys() 但我没有得到结果

标签: javascript node.js arrays json object


【解决方案1】:

function convertRecord(array) {
    return array.reduce((obj, el) => {
        obj[el.flag ? 'flag_true' : 'flag_false'].push(el);
        return obj;
    }, {
        flag_true: [],
        flag_false: []
    })
}

const data = {
  records:{
          data:{
              current:{
                     records:{
                        '2years':[{a:1, b:2, flag:true},
                                  {a:2, b:4},
                                  {a:3, b:5, flag:true},
                                  {a:4, b:2}],
                                  
                        '3years':[{a:1, b:2, flag:true},
                                  {a:2, b:4},
                                  {a:3, b:5, flag:true},
                                  {a:4, b:2}]
                     }
              }
          }
  }
}

for(const key in data.records.data.current.records) {
  data.records.data.current.records[key] = convertRecord(data.records.data.current.records[key]);
}

console.log(data);

【讨论】:

  • 如何遍历对象来访问数组
  • @RoDev 我在答案中添加了一个使用 for in 进行迭代的示例
  • @Darth:关键的“当前”是动态的..它也可以是“以前的”......而且只有一个数组而不是多个数组
  • @RoDev 所以用 for..in 代表data.records.data
  • 能否请您详细说明...我没明白
猜你喜欢
  • 2019-03-31
  • 1970-01-01
  • 2013-09-26
  • 1970-01-01
  • 2017-03-22
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多