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

删除嵌套数组

删除嵌套数组

牛魔王的故事 2022-09-02 16:54:36
我有一个数组,其中包含许多基本属性和多个嵌套数组。我正在尝试删除嵌套数组,留下所有基项。我不想按名称过滤掉它们,而是按类型过滤掉它们。{    "ID": 123,    "ItemName": "Item1",    "CommentList": [        {            "CommentID": "ABC",            "CommentText": "Test entry"        }    ],    "ExtraList": [        "A123B"    ]}期望的结果是:{    "ID": 123,    "ItemName": "Item1",}我尝试了过滤器,但无法让它工作,下面是我来过的最接近的,但鉴于我无法优雅地将属性返回给调用方,这一定是错误的轨道。  let test = arr.forEach(function (item) {    for (var propertyName in item) {      if (!Array.isArray(propertyName))        return propertyName;        }  });
查看完整描述

4 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

对于初学者,不返回新数组。如果要返回新数组,请改用。Array.prototype.forEachArray.prototype.map


我之所以这么说,只是因为您将其分配给测试,这将返回未定义。


有了这个,他们应该工作


data.forEach(item => {

for(const key in item) {

    if(Array.isArray(item[key])) {

        delete item[key]        

    }

}

})

以下是输入和输出的代码:


输入:


const data = [

{

    "ID": 123,

    "ItemName": "Item1",

    "CommentList": [

        {

            "CommentID": "ABC",

            "CommentText": "Test entry"

        }

    ],

    "ExtraList": [

        "A123B"

    ]

},

{

    "ID": 124,

    "ItemName": "Item1",

    "CommentList": [

        {

            "CommentID": "ABC",

            "CommentText": "Test entry"

        }

    ],

    "ExtraList": [

        "A123B"

    ]

}

]

输出:


[

{ID: 123, ItemName: "Item1"},

{ID: 124, ItemName: "Item1"}

]

希望这有帮助!


查看完整回答
反对 回复 2022-09-02
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

试试这个


const a = {

  "ID": 123,

  "ItemName": "Item1",

  "CommentList": [

    {

        "CommentID": "ABC",

        "CommentText": "Test entry"

    }

 ],

 "ExtraList": [

    "A123B"

 ]

}


const obj = {};


Object.keys(a)

.filter(key => !(a[key] instanceof Array))

.forEach(key => obj[key] = a[key]);


console.log(obj);


查看完整回答
反对 回复 2022-09-02
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

arr是一个对象,你可以得到一个键数组,然后过滤它。Object.keys(obj)


let obj = {

  "ID": 123,

  "ItemName": "Item1",

  "CommentList": [{

    "CommentID": "ABC",

    "CommentText": "Test entry"

  }],

  "ExtraList": [

    "A123B"

  ]

}


let test = Object.keys(obj).filter((key) => {

  return !Array.isArray(obj[key])

})


console.log(test)


查看完整回答
反对 回复 2022-09-02
?
ibeautiful

TA贡献1993条经验 获得超5个赞

你可以这样做,最简单的方法来做到这一点


const data = [

{

    "ID": 123,

    "ItemName": "Item1",

    "CommentList": [

        {

            "CommentID": "ABC",

            "CommentText": "Test entry"

        }

    ],

    "ExtraList": [

        "A123B"

    ]

},

{

    "ID": 124,

    "ItemName": "Item2",

    "CommentList": [

        {

            "CommentID": "CDE",

            "CommentText": "Test entry 2"

        }

    ],

    "ExtraList": [

        "A123BC"

    ]

}

]


let finalOutput=JSON.parse(JSON.stringify(data,['ID','ItemName']))

console.log(finalOutput)


查看完整回答
反对 回复 2022-09-02
  • 4 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

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