我正在try 从对象的嵌套数组中过滤出一个键,在本例中是count.

我有

let test  = [
 {
  "id": "c3c6f410f58e5836431b473ebcf134756232d04f2bf35edff8",
  "label": "Sector2",
  "options": {
   "62f92fab79ac81d933765bd0bbc4a1f5ea26cb3a088bcb4e6e": {
    "index": 0,
    "value": "Bob",
    "label": "Bob",
    "count": 1
   },
   "2fe91aa3567c0d04c521dcd2fc7e40d7622bb8c3f594d503da": {
    "index": 1,
    "value": "Student",
    "label": "Student",
    "count": 1
   },
   "c59ea1159f33b91a7f6edc6925be5e373fc543e4": {
    "index": 2,
    "value": "BBB",
    "label": "BBB",
    "count": 1
   },
   "c59ea1159f33b91a7f6edc6925be5e373fc54AAA": {
    "index": 3,
    "value": "Orange Duck",
    "label": "Orange Duck",
    "count": 1
   }
  }
 },
 {
  "id": "f794c6a52e793ee6f5c42cd5df6b4435236e3495e951709485",
  "label": "Brown Cow"
 },
 {
  "id": "f794c6a52e793ee6f5c42cd5df6b4435236e3495e95170ZZZ",
  "label": "Red Fish"
 }
]

 test = test.filter(item => item[0].options['count']);

但我得到了Cannot read properties of undefined

我正在try 从所有有选项的测试元素中过滤掉计数

需输出

谢谢

[
 {
  "id": "c3c6f410f58e5836431b473ebcf134756232d04f2bf35edff8",
  "label": "Sector2",
  "options": {
   "62f92fab79ac81d933765bd0bbc4a1f5ea26cb3a088bcb4e6e": {
    "index": 0,
    "value": "Bob",
    "label": "Bob"
   },
   "2fe91aa3567c0d04c521dcd2fc7e40d7622bb8c3f594d503da": {
    "index": 1,
    "value": "Student",
    "label": "Student"
   },
   "c59ea1159f33b91a7f6edc6925be5e373fc543e4": {
    "index": 2,
    "value": "BBB",
    "label": "BBB",
    "count": 1
   },
   "c59ea1159f33b91a7f6edc6925be5e373fc54AAA": {
    "index": 3,
    "value": "Orange Duck",
    "label": "Orange Duck"
   }
  }
 },
 {
  "id": "f794c6a52e793ee6f5c42cd5df6b4435236e3495e951709485",
  "label": "Brown Cow"
 },
 {
  "id": "f794c6a52e793ee6f5c42cd5df6b4435236e3495e95170ZZZ",
  "label": "Red Fish"
 }
]

推荐答案

filter()用于filter数组的一部分,而不是删除对象的嵌套键.


实现所需结果的最简单方法是:

  1. 在每个对象上循环
  2. 如果这个对象有options
  3. options个循环
  4. 使用delete删除当前对象的count

const data = [{"id": "c3c6f410f58e5836431b473ebcf134756232d04f2bf35edff8", "label": "Sector2", "options": {"62f92fab79ac81d933765bd0bbc4a1f5ea26cb3a088bcb4e6e": {"index": 0, "value": "Bob", "label": "Bob", "count": 1 }, "2fe91aa3567c0d04c521dcd2fc7e40d7622bb8c3f594d503da": {"index": 1, "value": "Student", "label": "Student", "count": 1 }, "c59ea1159f33b91a7f6edc6925be5e373fc543e4": {"index": 2, "value": "BBB", "label": "BBB", "count": 1 }, "c59ea1159f33b91a7f6edc6925be5e373fc54AAA": {"index": 3, "value": "Orange Duck", "label": "Orange Duck", "count": 1 } } }, {"id": "f794c6a52e793ee6f5c42cd5df6b4435236e3495e951709485", "label": "Brown Cow" }, {"id": "f794c6a52e793ee6f5c42cd5df6b4435236e3495e95170ZZZ", "label": "Red Fish" } ];

for (let i in data) {
    if (data[i]?.options) {
        for (let j in data[i].options) {
            delete data[i].options[j]?.count;
        }
    }
}

console.log(data);

Javascript相关问答推荐

d3可排序表标题行中有收件箱--如何使收件箱不触发排序?

鼠标移动时更新画布

如何在react + react路由域名中使用DeliverBrowserRouter?

在时间轴完整日历中显示日期标题

在贝塞尔曲线的直线上找不到交叉点:(使用@Pomax的bezier.js)

如何将连续的十六进制字符串拆分为以空间分隔的十六进制块,每个十六进制块包含32个二元组?

角色 map 集/spritebook动画,用户输入不停止在键上相位器3

我应该绑定不影响状态的函数吗?'

JS,当你点击卡片下方的绿色空间,而它是在它的背后转动时,

在执行异步导入之前判断模块是否已导入()

WhatsApp Cloud API上载问题:由于MIME类型不正确而导致接收&Quot;INVALID_REQUEST";错误

React.Development.js和未捕获的ReferenceError:未定义useState

如何将数据块添加到d3力有向图中?

在Reaction中的handleSubmit按钮内,useSelector值仍然为空

按什么顺序接收`storage`事件?

JavaScript:如果字符串不是A或B,则

如何使用画布在另一个内部绘制一个较小但相同的形状,同时保持恒定的边界厚度?

处理app.param()中的多个参数

如何在脚本编译后直接将RxJ模块导入浏览器(无需Angel、webpack、LiteServer)

MUI迷你图:如何将$符号添加到MUI迷你图中的工具提示数据