首页 > 解决方案 > 如何使用角度从数组中删除未定义的对象?

问题描述

let myArr=[{
    "name": "",
    "columns": [
      {
        
        "data": "test1",
        "type": "",
        
        
      },
      undefined,
      {
        "data": "test1",
        "type": "",
      }
    ],
    "info": "value",
    
  }]

在具有未定义或空值的对象数组上方,我必须删除未定义的值。

标签: arraysangulartypescript

解决方案


这可以通过组合Array.map()Object.keys()、和(核心部分)来完成Array.reduce(),如下面的可运行代码所示:Array.isArray()Array.filter()

let myArr=[{
    "name": "",
    "columns": [
      {        
        "data": "test1",
        "type": "",        
      },
      undefined,
      {
        "data": "test1",
        "type": "",
      }
    ],
    "info": "value",    
  }]
  
myArr = myArr.map(o => Object.keys(o).reduce((acc, key) => {
  let value = o[key];  
  if (Array.isArray(value)) {
    value = value.filter(o2 => o2);
  }
  acc[key] = value;
  return acc;
}, {}));

console.log(myArr);


推荐阅读