arrays - Angular 8 : Remove empty Object from array

标签 arrays angular angular8

我使用 Angular8,想要从数组中删除空对象,并获取其长度

Array: [
{data01: "abc", data02: "cde", data03: "fgh", data04: "", data05: ""},
{data01: "abc", data02: "cde", data03: "", data04: "", data05: ""},
{data01: "abc", data02: "cde", data03: "fgh", data04: "ijk", data05: "lmn"},
{data01: "abc", data02: "", data03: "", data04: "", data05: ""},
]

那么我希望它像

Array: [
{data01: "abc", data02: "cde", data03: "fgh"},
{data01: "abc", data02: "cde"},
{data01: "abc", data02: "cde", data03: "fgh", data04: "ijk", data05: "lmn"},
{data01: "abc"},
]

无论如何都要这么做吗?

我尝试将这些元素插入一个新数组中,例如

_Array: ["abc","cde", "fgh", "", "", ....] 

将其分块为5,然后进行过滤( bool ),它可以工作,但性能有点慢,还有其他方法可以提高性能吗?

最佳答案

可以使用JS中Array对象方法的map()和filter()来解决这个问题。

let array = [
{data01: "abc", data02: "cde", data03: "fgh", data04: "", data05: ""},
{data01: "abc", data02: "cde", data03: "", data04: "", data05: ""},
{data01: "abc", data02: "cde", data03: "fgh", data04: "ijk", data05: "lmn"},
{data01: "abc", data02: "", data03: "", data04: "", data05: ""},
]; // array provided

array = array.map(object => {
          let entries = Object.entries(object); //for each element in the array get the entries, [key, value] pair
          entries = entries.filter(([key, value]) => value !== ""); // remove the elements which has "" values
          return Object.fromEntries(entries);
          });
console.log(array.length);
// shorter version
array = array.map(object => Object.fromEntries(Object.entries(object).filter(([key, value]) => value !== "")));
console.log(array.length);

如果输入数组有一个包含所有条目“”(空字符串)的对象,则结果数组可能包含一个空对象。例如:{data01:“”,data02:“”,data03:“”,data04:“”,data05:“”}。在这种情况下,我们需要另一个filter()来从结果数组中删除空对象。

let array = [
    {data01: "abc", data02: "cde", data03: "fgh", data04: "", data05: ""},
    {data01: "abc", data02: "cde", data03: "", data04: "", data05: ""},
    {data01: "abc", data02: "cde", data03: "fgh", data04: "ijk", data05: "lmn"},
    {data01: "abc", data02: "", data03: "", data04: "", data05: ""},
    ]; // array provided

    array = array.map(object => {
              let entries = Object.entries(object);
              entries = entries.filter(([key, value]) => value !== "");
              return Object.fromEntries(entries);
              });
    // remove the empty object if present
    array = array.filter(object => Object.entries(object).length !== 0);
    console.log(array.length);
    // shorter version
    array = array.map(object => Object.fromEntries(Object.entries(object).filter(([key, value]) => value !== ""))).filter(object => Object.entries(object).length !== 0);
    // the filter() at the  end removes the empty object
    console.log(array.length);

关于arrays - Angular 8 : Remove empty Object from array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59558388/

相关文章:

php - MySQL 表没有从 PHP 数组中获取所有值

c - 存储 N amount 数组的最佳方式是什么? C

html - 修复 ngx-datatable 中的 header

angular - 多个连续效果未完成?

Angular 8 @ViewChild 翻译

sql - Postgres : "Recursive" query with Array

java : create a matrix of strings

angular - 每 X 秒调用一个函数

javascript - 如何访问http响应中的嵌套数组和对象

select - 农业网格 : ERROR TypeError: Cannot read property 'componentFromFramework' of null