gpt4 book ai didi

javascript - 如何根据字段从 javascript 对象中删除一行并重新对齐对象

转载 作者:行者123 更新时间:2023-11-30 12:09:59 25 4
gpt4 key购买 nike

我有下面的javascript对象

temp=[
{'id': 0, 'name': 'Housing', 'value': 3},
{'id': 1, 'name': 'Bank', 'value': 8},
{'id': 2, 'name': 'Entertainment', 'value': 3},
{'id': 3, 'name': 'Restaurant', 'value': 3},
{'id': 4, 'name': 'Groceries', 'value': 7}
]

我想根据名称字段删除一行。

示例:如果我调用名为“娱乐”的函数,我希望删除该特定行并重新调整 id (0,1,2,3...)所有其他行应保持原样。

函数后,temp应该是

temp=[
{'id': 0, 'name': 'Housing', 'value': 3},
{'id': 1, 'name': 'Bank', 'value': 8},
{'id': 2, 'name': 'Restaurant', 'value': 3},
{'id': 3, 'name': 'Groceries', 'value': 7}
]

我该怎么做?

我在下面试过:

function realign(tagrm)
{
temp.each(function (i, elem) {
temp[i] = {
if(temp[i][name]==tagrm)
delete temp[i]
}
}

我如何才能删除特定行并将其他行 ID 重新调整为 0,1,2,3...?

最佳答案

尝试使用 Array.prototype.splice()Array.prototype.forEach() ,递归

var match = "Entertainment";

function filter(arr, m, i) {
if (i < arr.length) {
if (arr[i].name === m) {
arr.splice(i, 1);
arr.forEach(function(val, index) {
val.id = index
});
return arr
} else {
return filter(arr, m, i + 1)
}
} else {
return m + " not found in array"
}
}

filter(temp, match, 0)

var temp = [{
'id': 0,
'name': 'Housing',
'value': 3
}, {
'id': 1,
'name': 'Bank',
'value': 8
}, {
'id': 2,
'name': 'Entertainment',
'value': 3
}, {
'id': 3,
'name': 'Restaurant',
'value': 3
}, {
'id': 4,
'name': 'Groceries',
'value': 7
}]

var match = "Entertainment";

function filter(arr, m, i) {
if (i < arr.length) {
if (arr[i].name === m) {
arr.splice(i, 1);
arr.forEach(function(val, index) {
val.id = index
});
return arr
} else {
return filter(arr, m, i + 1)
}
} else {
return m + " not found in array"
}
}

console.log(filter(temp, match, 0), JSON.stringify(temp, null, 2))

关于javascript - 如何根据字段从 javascript 对象中删除一行并重新对齐对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34093682/

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