繁体   English   中英

从 Node.js 中的 Array 对象中删除特定属性

[英]Remove specific properties from Array objects in Node.js

例如,我有这个数组,如果我将其字符串化,它将是这样的:

[{"car":"Toyota","ID":"1", "Doors": "4", "price": "20.000"},{"car":"Chevrolet","ID":"2", "Doors": "2", "price": "15.000"}]

我该怎么做才能从 2 辆车中移除:车门和价格。 并且只留在数组“car”和“id”中? 例如:

[{"car":"Toyota","ID":"1"},{"car":"Chevrolet","ID":"2"}]

谢谢!

 let arr = [{"car":"Toyota","ID":"1", "Doors": "4", "price": "20.000"},{"car":"Chevrolet","ID":"2", "Doors": "2", "price": "15.000"}] let arr1 = arr.map(({car, ID}) => ({car, ID})); let arr2 = arr.map(({Doors, price, ...remainingAttrs}) => remainingAttrs); console.log('arr1:', arr1); console.log('arr2:', arr2);

使用ES6 语法,您可以解构每个对象以创建新对象,而无需编写循环。

在您的情况下,剩余的字段总数与删除的总数相同以下是两种方法:

  • 如果要保留的字段数量较少,那么您可以使用:

const arr1 = arr.map(({car, ID}) => ({car, ID}))

  • 如果要删除的字段数量较少,则可以使用:

const arr2 = arr.map(({Doors, price, ...remainingAttrs}) => leftAttrs)

您可以使用Array.prototype.map()自定义结果数组,将回调函数作为参数,在每次迭代中返回一个新的自定义对象,只有carID属性。

map() 方法使用对调用数组中的每个元素调用提供的函数的结果创建一个新数组。

这是您的代码应该如何:

var results = arr.map(function(item){
  return {car : item["car"], ID : item["ID"]}
});

演示:

 var arr = [{"car":"Toyota","ID":"1", "Doors": "4", "price": "20.000"},{"car":"Chevrolet","ID":"2", "Doors": "2", "price": "15.000"}]; var results = arr.map(function(item){ return {car : item["car"], ID : item["ID"]} }); console.log(JSON.stringify(results));

添加到所有其他答案

使用 ES6 语法的更简洁的方法

 var originalArray =[{"car":"Toyota","ID":"1", "Doors": "4", "price": "20.000"},{"car":"Chevrolet","ID":"2", "Doors": "2", "price": "15.000"}]; var immutableArray = originalArray.map(({Doors, price, ...rest})=> rest); console.log(immutableArray);

您必须遍历数组,删除每个对象上的属性。

示例:

for (var i = 0; i < myArray.length; i++){
  delete myArray[i].myProperty
}

添加到答案中,使用 ES6 并避免突变和一些 ESlint 问题。

const Array = [{"car":"Toyota","ID":"1", "Doors": "4", "price": "20.000"}, 
              {"car":"Chevrolet","ID":"2", "Doors": "2", "price": "15.000"}];
const newArray = Array.map((object) => {
             const {car, ID} = object;
             return {car, ID};
});

检查评论以获取解释:

 var array=[{"car":"Toyota","ID":"1", "Doors": "4", "price": "20.000"},{"car":"Chevrolet","ID":"2", "Doors": "2", "price": "15.000"}]; var resultArr = array.map(function(obj){ //we take only key-value pairs we need using JS bracket notation return {"car":obj["car"],"ID":obj["ID"]}; }); console.log(resultArr);

您将寻找delete运算符来完全删除这些属性。 它可能看起来像这样:

var array = [{"car":"Toyota","ID":"1", "Doors": "4", "price": "20.000"},{"car":"Chevrolet","ID":"2", "Doors": "2", "price": "15.000"}]

for (car of array) {
    delete(car.Doors);
    delete(car.price);
}

您还可以考虑使用 Array.splice() 来提高大型阵列的性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM