为了账号安全,请及时绑定邮箱和手机立即绑定

从嵌套 json 中过滤项目

从嵌套 json 中过滤项目

一只甜甜圈 2023-11-12 14:59:37
有一个json:x = [{"name":"Peter", "list":[{"position":"high", "id":"ZZ"},                         {"position":"low", "id":"KJ"}]},{"name":"Alise", "list":[{"position":"high", "id":"TC"},                         {"position":"low", "id":"ZZ"}]}]我需要使用filter()删除“list”中包含“id”:“ZZ”的那些项目。我期望最终的结果如下:[{"name":"Peter", "list":[{"position":"low", "id":"KJ"}]},{"name":"Alise", "list":[{"position":"low", "id":"ZZ"}]}]我尝试实现这一目标:y = for (i=0;i<x.length;++i){        for (n=0;n<x[i]["list"].length;++n){             x[i]["list"][n].filter(id => "id" == "ZZ")        }    }浏览器控制台输出显示Uncaught TypeError: x[i]["list"][n].filter is not a function.你能告诉我如何过滤给定的 json 并摆脱 "id":"ZZ" 行吗?
查看完整描述

2 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

map您可以为每个元素和filter每个list元素执行 a


我在这里使用展开运算符来保持其他属性相同,只需修改list


const x = [

  {

    name: "Peter",

    list: [

      { position: "high", id: "ZZ" },

      { position: "low", id: "KJ" },

    ],

  },

  {

    name: "Alise",

    list: [

      { position: "high", id: "TC" },

      { position: "low", id: "ZZ" },

    ],

  },

];


const res = x.map((el) => ({

  ...el,

  list: el.list.filter(({ id }) => id !== "ZZ"),

}));


console.log(res);


查看完整回答
反对 回复 2023-11-12
?
繁花如伊

TA贡献2012条经验 获得超12个赞


// const objectScan = require('object-scan');


const myData = [ { name: 'Peter', list: [{ position: 'high', id: 'ZZ' }, { position: 'low', id: 'KJ' }] }, { name: 'Alise', list: [{ position: 'high', id: 'TC' }, { position: 'low', id: 'ZZ' }] } ];


const prune = (data, id) => objectScan(['[*].list[*]'], {

  rtn: 'count',

  filterFn: ({ value, property, parent }) => {

    if (value.id === id) {

      parent.splice(property, 1);

      return true;

    }

    return false;

  }

})(data);


console.log(prune(myData, 'ZZ')); // returns the number of deletions

// => 2


console.log(myData);

// => [ { name: 'Peter', list: [ { position: 'low', id: 'KJ' } ] }, { name: 'Alise', list: [ { position: 'high', id: 'TC' } ] } ]

.as-console-wrapper {max-height: 100% !important; top: 0}

<script src="https://bundle.run/object-scan@13.8.0"></script>


查看完整回答
反对 回复 2023-11-12
  • 2 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信