我可能忽略了具有相同问题的主题。但我似乎无法弄清楚。我想删除最后一列中的项目。尝试了forEach但对我不起作用,它删除了myArr的完整第一列(例如)。 Maby而不是删除切片?
例如,我有这个JSON数组(myArr):
let myArr = JSON.parse(this.responseText);
let myColumnYears = Object.keys(myArr);
let myColumnInhabitants =
Object.values(myArr[0]);
myArr.forEach(function() {
delete myColumnYears[0];
});
[
{
"1996": "7959017",
"1997": "7968041",
"1998": "7976789",
"1999": "7992324",
},
{
"1996": "10156637",
"1997": "10181245",
"1998": "10203008",
"1999": "10226419",
},
{
"1996": "7071850",
"1997": "7088906",
"1998": "7110001",
"1999": "7143991",
}
]
我想删除每个数组的最后2个对象,因此结果变为:
[
{
"1996": "7959017",
"1997": "7968041",
},
{
"1996": "10156637",
"1997": "10181245",
},
{
"1996": "7071850",
"1997": "7088906",
}
]
我想我要更具体一些。
答案 0 :(得分:4)
您可以使用.map()
遍历数组,选择感兴趣的属性,然后将它们作为对象返回。
let data = [
{"1996": "7959017", "1997": "7968041", "1998": "7976789","1999": "7992324"},
{"1996": "10156637", "1997": "10181245", "1998": "10203008", "1999": "10226419" },
{"1996": "7071850", "1997": "7088906", "1998": "7110001", "1999": "7143991" }
];
let result = data.map(o => ({"1996": o["1996"], "1997": o["1997"]}));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:0)
如果对象中有更多的密钥对值,会发生什么?您将需要修改map
函数。
为避免这种情况,可以使用另一种方法来解决此问题。尝试在对象中添加更多键值对,此代码将始终删除最后两个键值对。
let data = [
{"1996": "7959017", "1997": "7968041", "1998": "7976789","1999": "7992324"},
{"1996": "10156637", "1997": "10181245", "1998": "10203008", "1999": "10226419" },
{"1996": "7071850", "1997": "7088906", "1998": "7110001", "1999": "7143991" }
];
data.forEach((element, index) => {
const keys = Object.keys(element);
delete element[keys[keys.length - 1]];
delete element[keys[keys.length - 2]];
});
console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }