我有这个对象:
{
value: "something",
data: Array[{
player: "simple name",
properties: {
age: "",
favouriteColour: Array[{
a: "1",
b: "2",
c: Array[{
0: "Problem 1",
1: "Problem 2"
}],
},]
}
},{
player: "simple name",
properties: {
age: "",
favouriteColour: Array[{
a: "1",
b: "2",
c: Array[{
1: "Problem 2"
}],
},]
}
},
]
}
我只想获取值为“问题1”的对象。现在,我在一个带有641个播放器对象的数组中拥有此结构,要检查该结构,并且只带“问题1”。
答案 0 :(得分:1)
为该问题添加了解决方案,您高度依赖于数据结构,如果更改了该数据,则需要更改解决方案。
const toFilter = {
value: 'something',
data: [
{
player: 'simple name',
properties: {
age: '',
favouriteColour: [
{
a: '1',
b: '2',
c: [
{
0: 'Problem 1',
1: 'Problem 2'
}
]
}
]
}
},
{
player: 'simple name',
properties: {
age: '',
favouriteColour: [
{
a: '1',
b: '2',
c: [
{
1: 'Problem 2'
}
]
}
]
}
}
]
}
const filtered = toFilter.data.reduce((acc, el) => {
// hightly dependand on the data structure
const colors = Object.values(el.properties.favouriteColour[0].c[0])
const isValid = colors.includes('Problem 1')
if (isValid) acc.push(el)
return acc
}, [])
console.log('filtered:', filtered)
答案 1 :(得分:0)
考虑一下。实际上很简单。
我认为这最终将成为JSON结构。考虑到这一点,问题在于,在JSON中,您不能从子级到父级;您只能从父母到孩子向下走。
因此,您实际上只需要遍历数据对象并查看每个播放器对象。对于每个玩家对象,检查properties.favoriteColour
是否包含项"Problem 1"
。如果是这样,请记下该播放器对象所需的其他属性,或将其完全复制到存储在某个位置,具体取决于您最终想要使用它的方式。