gpt4 book ai didi

arrays - Angular 8 : Remove empty Object from array

转载 作者:行者123 更新时间:2023-12-02 01:23:16 29 4
gpt4 key购买 nike

我使用 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com