【问题标题】:Remove specific properties from Array objects in Node.js从 Node.js 中的 Array 对象中删除特定属性
【发布时间】: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)
  • 到目前为止你尝试过什么?您想修改同一个数组还是可以创建一个新数组?
  • 你能告诉我们你做了什么或者你做了什么研究吗?
  • 我有这个数组你的问题中的数组在哪里?

标签: javascript arrays node.js 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);

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2018-10-03
              • 1970-01-01
              • 2019-12-03
              • 2021-03-02
              • 1970-01-01
              • 2021-09-11
              • 1970-01-01
              相关资源
              最近更新 更多