У меня есть список
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", чтобы получить новый список. Есть ли элегантный способ сделать это? или мне нужно зацикливать все данные на использование метода сплайсинга?
Я бы возражал против использования ключевого слова delete, потому что вы бы мутировали список вместо создания нового, а также из-за его поведения, описанного в документации. Особенно эти строки о:
Вместо этого вы можете map()
.
listWithoutTel = list.map(({ tel, ...item }) => item);
Здесь вы должны использовать остальные параметры, чтобы поместить все свойства, кроме нежелательного (в данном случае tel
) разрушенного объекта в переменную с именем item
и немедленно вернуться.
map(({ 'tel num': tel, ...item }) =>......
Статическим способом:
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
для проверки ключей.
Используйте оператор 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);
tel
Насколько я знаю, вы не найдете пути без зацикливания. Если вы думаете об этом, чтобы удалить ключ от каждого объекта, ему нужно будет перевернуть его, несмотря ни на что, даже если это всего лишь петля, замаскированная под простую функцию.
Что касается простоты, я бы рекомендовал использовать:
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);
Вы можете использовать ключевое слово delete.
delete myObject.prop
findIndex
последующимsplice
, конечно, это достаточно просто?list.map(({id, order_number, weight}) => ({id, order_number, weight}))
,