Javascript 在对象的嵌套数组中应用过滤器,使用for each

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:空,

我试图根据对象的特定属性是否为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:空,
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')}))