从数组javascript创建新对象

时间:2016-05-03 07:34:20

标签: javascript arrays

我有这个对象:

var obj = {
    name : 'Allen',
    last : 'Jones',
    age : 24,
    city : 'London'
}

和这个数组:['name', 'age', 'city']

从所选字段创建对象的最有效方法是什么?如下,没有删除第一个属性?

obj2 = {name: 'allen', age: 24, city: 'London'}

6 个答案:

答案 0 :(得分:3)

我建议使用Array#forEach()并迭代新对象的给定键。

var obj = { name: 'Allen', last: 'Jones', age: 24, city: 'London' },
    array = ['name', 'age', 'city'],
    obj2 = {};

array.forEach(function (a) {
    obj2[a] = obj[a];
});

document.write('<pre>' + JSON.stringify(obj2, 0, 4) + '</pre>');

答案 1 :(得分:1)

尝试这个简单的循环

var obj = {
    name : 'Allen',
    last : 'Jones',
    age : 24,
    city : 'London'
};
var obj2 = {};
var arr = ['name','age','city'];
arr.forEach(function(val){
   obj2[val] = obj[val]; 
});

现在obj2应该只有选定的属性

答案 2 :(得分:0)

您可以使用循环来遍历每个属性。有许多方法,例如for循环,while循环或foreach循环。这是一个,使用简单的for循环:

var obj = {
  name: 'Allen',
  last: 'Jones',
  age: 24,
  city: 'London'
};

var arr = ['name', 'age', 'city'];
var obj2 = {};

for (var i = 0; i < arr.length; i++) {
  var property = arr[i];
  obj2[property] = obj[property];
}

可以看到实例({3}}。

答案 3 :(得分:0)

您可以从现有对象中删除“last”属性,该对象将与您想要的相同。

 var obj = {
              name : 'Allen',
              last : 'Jones',
              age : 24,
              city : 'London'
           }

 delete obj.last;

 console.log(obj);

希望得到这个帮助。

答案 4 :(得分:0)

以下是具有所需输出的通用方法:

var obj = {
    name : 'Allen',
    last : 'Jones',
    age : 24,
    city : 'London'
};

obj2 = ['name', 'age', 'city'];

function createObject(obj, arr) {
    var newObj = {};
  
    arr.forEach(function(value) {
        if(obj.hasOwnProperty(value)) {
            newObj[value] = obj[value];
        }
    });
  
    return newObj;
}

document.write(JSON.stringify(createObject(obj, obj2)));

答案 5 :(得分:0)

在这个答案下有很多很好的方法。这是一种功能可链接的方法。

var obj = {
           name : 'Allen',
           last : 'Jones',
            age : 24,
           city : 'London'
          },
    arr = ['name', 'age', 'city'],
    res = arr.reduce((p,c) => {p[c] = obj[c]; return p} ,{});

document.write("<pre>" + JSON.stringify(res) + "</pre>");