我有一个清单
let list = [
{
id: "247",
order_number: "21251",
tel: 13911111,
weight: "10kg"
},
{
id: "245",
order_number: "223",
tel: 31,
weight: "10kg"
},
{
id: "123",
order_number: "312312321",
tel: 3213123,
weight: "10kg"
}
];
现在我只想删除特定列,例如'tel',以获取新列表。有没有优雅的方法呢?或者我必须循环整个数据才能使用拼接方法?
答案 0 :(得分:3)
我认为反对使用删除关键字,因为您将改变列表而不是创建新的,并且还因为{{3 ,特别是那些关于:
的行相反,你可以map()
。
listWithoutTel = list.map(({ tel, ...item }) => item);
您可以使用documentation将所有属性但放入rest parameters的不需要的属性(在本例中为tel
)一个名为item
的变量,并立即返回。
答案 1 :(得分:1)
以静态方式:
let list = [
{
id: "27",
order_number: "21251",
tel: 13911111,
weight: "10kg"
},
{
id: "245",
order_number: "223",
tel: 31,
weight: "10kg"
},
{
id: "123",
order_number: "312312321",
tel: 3213123,
weight: "10kg"
}
];
let new_list = list.map(function(obj) {
return {
id: obj.id,
order_number: obj.order_number,
weight: obj.weight
}
});
console.log(list);
console.log(new_list)
这样,您可以保留旧数组和新数组。
如果您想以动态方式执行此操作,可以使用forEach
检查密钥。
答案 2 :(得分:0)
使用delete
运算符从循环中的所有对象中删除tel键
let list = [
{
id: "247",
order_number: "21251",
tel: 13911111,
weight: "10kg"
},
{
id: "245",
order_number: "223",
tel: 31,
weight: "10kg"
},
{
id: "123",
order_number: "312312321",
tel: 3213123,
weight: "10kg"
}
];
var list2 = JSON.parse(JSON.stringify(list));
for(i in list2) {
delete list2[i].tel;
}
console.log(list2);
console.log(list);

答案 3 :(得分:0)
据我所知,如果没有循环,你就不会找到方法。如果你考虑一下,为了从每个对象中删除密钥,它将需要循环遍历它,即使它只是一个伪装成一个简单函数的循环。
就简单性而言,我建议使用:
list.forEach(function(x){delete x.tel});
let list = [
{
id: "247",
order_number: "21251",
tel: 13911111,
weight: "10kg"
},
{
id: "245",
order_number: "223",
tel: 31,
weight: "10kg"
},
{
id: "123",
order_number: "312312321",
tel: 3213123,
weight: "10kg"
}
];
list.forEach(function(x){ delete x.tel });
console.log(list);
答案 4 :(得分:-2)
您可以使用delete keyword。
delete myObject.prop