如何从数据数组(JS)

时间:2018-06-12 02:28:39

标签: javascript arrays

我有一个清单

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',以获取新列表。有没有优雅的方法呢?或者我必须循环整个数据才能使用拼接方法?

5 个答案:

答案 0 :(得分:3)

我认为反对使用删除关键字,因为您将改变列表而不是创建新的,并且还因为{{3 ,特别是那些关于:

的行
  • 使用let或const声明的任何属性都不能从定义它们的作用域中删除
  • 如果对象的原型链上存在具有相同名称的属性,则删除后,该对象将使用原型链中的属性(换句话说,删除仅对自身属性有影响)
  • 使用var声明的任何属性都不能从全局范围或函数范围中删除。

相反,你可以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