数组中的 Javascript 过滤器对象

标签 javascript filter

我遇到了这个挑战,我想返回一个包含对象的数组,其中控件数组在其子对象的“值”属性中具有值。

除此之外,它还应该删除控件数组中没有值的对象

const data = [
      {
        'groupName': '1',
        'controls': [
          {'value': ''},
          {'value': ''}
        ]
      },
      {
        'groupName': '2',
        'controls': [
          {'value': ''},
          {'value': '2'}
        ]
      }
    ];

    const result = data.filter(cl => {
      return cl.controls.some(r => {
        return r.value !== '';
      });
    });

    console.log(result);

结果是这样的

[
  {
    'groupName': '2',
    'controls': [
      {'value': ''},
      {'value': '2'}
    ]
  }
];

但我希望它是这样的

   [
      {
        'groupName': '2',
        'controls': [
          {'value': '2'}
        ]
      }
    ];

最佳答案

使用嵌套的 filter() 而不是 some()

const data = [{groupName:"1",controls:[{value:""},{value:""}]},{groupName:"2",controls:[{value:""},{value:"2"}]}];;

const result = data.filter(cl => {
  cl.controls = cl.controls.filter(r => {
    return r.value !== '';
  });
  return cl.controls.length
});

console.log(result);

注意:它改变了原始数组。您可以使用 Array.from(data).filter(...) 来避免它

关于数组中的 Javascript 过滤器对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57609424/

相关文章:

javascript - 如果列表数据包含

javascript - Vuejs 生命周期问题,仅在 Webpack 加载器刷新页面上的元素后才填充数据数组?谷歌地图标记不显示?

javascript - 使用 ajax 在 url 后面附加 #

scala - 在 Scala 中使用基于类型的过滤器时如何获得正确的返回类型

R - 时间序列的非线性滤波器 - 滤波器,重叠还是循环?

c# - 没有访问服务器配置的 asp.net mvc 2 的 GZip 或 Deflate 压缩

javascript - javascript 中的 Value.replace 不允许特定字符

javascript - 从缩略图切换新图像后,缩放仍显示原始图像

javascript - Phonegap 摄像头和二维码

java - 多个文本字段的文档监听器