Javascript 在对象的嵌套数组中应用过滤器,使用for each
我试图根据对象的特定属性是否为null来过滤对象数组中的数据点。但是,此数组嵌套在另一个数组中。请参见下面的示例(我想从“b”数组中删除那些在其“c”属性中包含null的对象:Javascript 在对象的嵌套数组中应用过滤器,使用for each,javascript,Javascript,我试图根据对象的特定属性是否为null来过滤对象数组中的数据点。但是,此数组嵌套在另一个数组中。请参见下面的示例(我想从“b”数组中删除那些在其“c”属性中包含null的对象: var数据=[{ 答:1,, b:[{ c:空, d:10 }, { c:10, d:10 }] }, { 答:2,, b:[{ c:空, d:10 }, { c:10, d:10 }, { c:13, d:1 }] }, { a:6, b:[{ c:空, d:10 }, { c:10, d:10 }, { c:空,
var数据=[{
答:1,,
b:[{
c:空,
d:10
}, {
c:10,
d:10
}]
}, {
答:2,,
b:[{
c:空,
d:10
}, {
c:10,
d:10
}, {
c:13,
d:1
}]
}, {
a:6,
b:[{
c:空,
d:10
}, {
c:10,
d:10
}, {
c:空,
d:10
}]
}]
data.forEach(函数(d){
d['b'].过滤器(函数(da){
返回类型(da['c'])=“编号”
})
})
console.log(数据)
您只需将“b”重新分配给新的筛选数组
您只需将“b”重新分配给新的筛选数组。这对您有用吗
data.map(item => ({ ...item, b: item.b.filter(itemB => itemB.c)}))
或
哪些产出:
[
{
"a": 1,
"b": [
{
"c": 10,
"d": 10
}
]
},
{
"a": 2,
"b": [
{
"c": 10,
"d": 10
},
{
"c": 13,
"d": 1
}
]
},
{
"a": 6,
"b": [
{
"c": 10,
"d": 10
}
]
}
]
这对你有用吗
data.map(item => ({ ...item, b: item.b.filter(itemB => itemB.c)}))
或
哪些产出:
[
{
"a": 1,
"b": [
{
"c": 10,
"d": 10
}
]
},
{
"a": 2,
"b": [
{
"c": 10,
"d": 10
},
{
"c": 13,
"d": 1
}
]
},
{
"a": 6,
"b": [
{
"c": 10,
"d": 10
}
]
}
]
您可以使用
reduce
功能尝试以下代码
var数据=[{
答:1,,
b:[{
c:空,
d:10
}, {
c:10,
d:20
}]
}, {
答:2,,
b:[{
c:空,
d:10
}, {
c:30,
d:40
}, {
c:13,
d:1
}]
}, {
a:6,
b:[{
c:空,
d:10
}, {
c:50,
d:60
}, {
c:空,
d:10
}]
}];
var结果=数据减少((r,s)=>{
r、 push(Object.assign({},s,{b:s.b.filter(v=>v.c)}));
返回r;
}, []);
console.log(结果);
您可以使用reduce
函数尝试以下代码
var数据=[{
答:1,,
b:[{
c:空,
d:10
}, {
c:10,
d:20
}]
}, {
答:2,,
b:[{
c:空,
d:10
}, {
c:30,
d:40
}, {
c:13,
d:1
}]
}, {
a:6,
b:[{
c:空,
d:10
}, {
c:50,
d:60
}, {
c:空,
d:10
}]
}];
var结果=数据减少((r,s)=>{
r、 push(Object.assign({},s,{b:s.b.filter(v=>v.c)}));
返回r;
}, []);
console.log(结果);
这里有一个
这是一个非常感谢所有的答案。我理解我的错误。我没有将.filter()的返回值赋给任何东西。这是更新的代码
data1=[{
答:1,,
b:[{
c:空,
d:10
}, {
c:10,
d:10
}]
}, {
答:2,,
b:[{
c:空,
d:10
}, {
c:10,
d:10
}, {
c:13,
d:1
}]
}, {
a:6,
b:[{
c:空,
d:10
}, {
c:10,
d:10
}, {
c:空,
d:10
}]
}]
data1.forEach(函数(d){
d['b']=d['b'].过滤器(函数(da){
da['c']=“编号”的返回类型
})
})
console.log(data1)
非常感谢所有的答案。我理解我的错误。我没有将.filter()的返回值赋值给任何东西。下面是更新的代码
data1=[{
答:1,,
b:[{
c:空,
d:10
}, {
c:10,
d:10
}]
}, {
答:2,,
b:[{
c:空,
d:10
}, {
c:10,
d:10
}, {
c:13,
d:1
}]
}, {
a:6,
b:[{
c:空,
d:10
}, {
c:10,
d:10
}, {
c:空,
d:10
}]
}]
data1.forEach(函数(d){
d['b']=d['b'].过滤器(函数(da){
da['c']=“编号”的返回类型
})
})
console.log(data1)
The.filter()
方法返回一个新数组。您的代码忽略返回值。@非常感谢。理解我的错误.filter()
方法返回一个新数组。您的代码忽略了返回值。@非常感谢。理解我的错误我得到的是一个空的“b”数组cases@VSharma修正了我得到了一个空的“b”数组cases@VSharma修复了我的代码错误…“未捕获的语法错误:意外标记…”…很抱歉,我不熟悉…的符号…它与ES6有关吗?是的,是的,让我们将其更改为正常赋值。我已删除了…
依赖项,请为我检查代码错误…“未捕获的语法错误:意外令牌…”…对不起,我不熟悉…的符号…它与ES6有关吗?是的,是的,让我们将其更改为普通赋值。我已删除了…
依赖项,请检查
data = data.map(value => ({...value, b: value.b.filter(innerValue => typeof innerValue.c === 'number')}))