gpt4 book ai didi

javascript - 删除对象数组中的空对象键

转载 作者:行者123 更新时间:2023-12-02 15:37:44 29 4
gpt4 key购买 nike

我正在尝试创建一个总结另一个数组的数组。我已经收到了一些非常好的想法 here ,所有这些都在起作用,但它们都产生了另一个我似乎无法解决的障碍。

基于@kooiinc的answer ,我当前的代码如下所示:

var grants = [
{ id: "p_1", location: "loc_1", type: "A", funds: "5000" },
{ id: "p_2", location: "loc_2", type: "B", funds: "2000" },
{ id: "p_3", location: "loc_3", type: "C", funds: "500" },
{ id: "p_2", location: "_ibid", type: "D", funds: "1000" },
{ id: "p_2", location: "_ibid", type: "E", funds: "3000" }
];
var projects = [];
grants.map(
function (v) {
if (!(v.id in this)) {
this[v.id] = v;
projects.push(v);
} else {
var current = this[v.id];
current.type = [v.type].concat(current.type);
current.funds = [v.funds].concat(current.funds);
}
}, {});

...给出了以下所需的结果(typefunds 连接到子数组中,其余的保持不变):

[
{ "id": "p_1", "location": "loc_1", "type": "A", "funds": "5000" },
{ "id": "p_2", "location": "loc_2", "type": ["E","D","B"], "funds": ["3000","1000","2000"] },
{ "id": "p_3", "location": "loc_3", "type": "C", "funds": "500" }
]

但是,如果某些对象具有未定义的键值,则结果数组中将为空。例如这样(查看 type 数组):

[
{ "id": "p_1", "location": "loc_1", "type": "A", "funds": "5000" },
{ "id": "p_2", "location": "loc_2", "type": ["E",null,null], "funds": ["3000","1000","2000"] },
{ "id": "p_3", "location": "loc_3", "type": "C", "funds": "500" }
]

(这里有一个 fiddle 具有相同的内容。)

我试图找到一种快速删除这些内容的方法(例如 herehere ),但由于某种原因,通常的方法(递归删除所有未定义/空的键)似乎都不起作用,无论我将它们放在代码中的什么位置。他们不会给出错误,只是不会删除任何内容。

是否有可能以某种方式排除映射中未定义的键?

更新:因此,某些对象键不会有任何值,只有[null,null,null],而其他对象键则有有一些但不是全部像 ["E",null,null]。这个想法是删除所有空项目,如果没有剩下任何内容,则也删除对象键。

最佳答案

尝试这样:

grants.map(
function (v) {
if (!(v.id in this)) {
// => initialize if empty
v.type = v.type || [];
v.funds = v.funds || [];
this[v.id] = v;
projects.push(v);
} else {
var current = this[v.id];
current.type = v.type ? [v.type].concat(current.type) : current.type;
current.funds = v.funds ? [v.funds].concat(current.funds) : current.funds;
}
}, {});

现在空值将不会显示在结果中。

关于javascript - 删除对象数组中的空对象键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32806786/

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