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

Posted

技术标签:

【中文标题】从 Node.js 中的 Array 对象中删除特定属性【英文标题】:Remove specific properties from Array objects in Node.js 【发布时间】:2017-12-06 21:49:01 【问题描述】:

例如我有这个数组,如果我把它串起来,它会是这样的:

["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"]

谢谢!

【问题讨论】:

使用前请先查看标签... 上面写的很清楚Java (not to be confused with javascript or JScript) 到目前为止你尝试过什么?您想修改同一个数组还是可以创建一个新数组? 你能告诉我们你做了什么或者你做了什么研究吗? 我有这个数组你的问题中的数组在哪里? How do I remove a property from a JavaScript object?的可能重复 【参考方案1】:

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) => 剩余属性)

【讨论】:

【参考方案2】:

添加到答案中,使用 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;
);

【讨论】:

【参考方案3】:

添加到所有其他答案

使用 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);

【讨论】:

它给出了 'Doors' 和 'price' 已定义但从未使用过的 es linting 错误。【参考方案4】:

您可以使用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));

【讨论】:

【参考方案5】:

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

例子:

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

【讨论】:

【参考方案6】:

您将寻找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() 来提高大型数组的性能。

【讨论】:

【参考方案7】:

查看评论以获取解释:

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);

【讨论】:

以上是关于从 Node.js 中的 Array 对象中删除特定属性的主要内容,如果未能解决你的问题,请参考以下文章

Coffeescript / Node.js:如何从对象数组中删除重复对象?

从 Array 推送到 Azure 队列覆盖消息?[node.JS]

Node JS 从数组中删除特定对象(猫鼬)

无法从 JSON 对象中删除字段 - Node JS

node中的url常用方法解析

考虑到 Mongoose Node.js 中的引用,如何删除对象?