从 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() 自定义您的结果数组,将回调函数作为参数返回一个新的自定义对象,在每次迭代中只有car
和ID
属性。
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:如何从对象数组中删除重复对象?