【发布时间】:2020-08-28 15:28:45
【问题描述】:
我有一个对象数组并对其进行过滤:
const test = [
{
"id":2,
"category_id":1,
"features":["blah","blah","blah","blah"],
"options":
{
"option1":
{
"b":22,"c":105,"d":70,"e":345
},
"option2":
{
"c":25,"c":41,"d":70,"e":345
}
}
},
{
"id":4,
"category_id":2,
"features":["blah","blah","blah","blah"],
"options":
{
"option1":
{
"b":22,"c":105,"d":70,"e":345
},
"option2":
{
"c":25,"c":41,"d":70,"e":345
}
}
},
{
"id":7,
"category_id":4,
"features":null,
"options":null
},
{
"id":11,
"category_id":6,
"features":["blah","blah","blah","blah"],
"options":
{
"option1":
{
"b":22,"c":105,"d":70,"e":345
},
"option2":
{
"c":25,"c":41,"d":70,"e":345
}
}
}
]
const filtered = test.filter((t) => {
})
具有“category_id: 4”的对象没有“选项”,但在 filter 内我需要所有存在的选项值:
const filtered = test.filter((t) => {
const tOptions = Object.values(t.options)
})
它给了我一个错误,因为某些选项不存在。 我知道如何修改数组并删除没有选项的对象(使用 Lodash)
_.reject(test, function(el) { return el.category_id === 4 })
但由于后面的逻辑,我无法修改“测试”数组。 不知何故,我需要这个结果而不接触数组本身:
[
Object
{
b:22,
c:105,
d:70,
e:345
},
Object
{
c:41,
d: 70,
e: 345
}
]
我真的放弃了。请帮忙。
【问题讨论】:
-
在获取值之前检查
options是否存在。例如,const tOptinos = t.options ? Object.values(t.options) : [];.
标签: javascript arrays object filtering