创建现有新的JavaScript对象的形式(Creating new javascript Obje

2019-10-23 16:23发布

我有我原来的对象如下。 所有我需要的是刚刚从现有的提取一些属性,并创建新的对象。

var data = [{
    id: 3,
    name: Axe,
    location: alkt
}, {
    id: 5,
    name: Roy,
    location: grelad
}]

我需要我作为输出,

var data_new = [{
    id: 3,
    name: Axe
}, {
    id: 5,
    name: Roy,
}]

如何下划线JS或任何简单的方法实现。 可能它是一个大的JSON对象。

Answer 1:

如果只有几个属性要提取,然后简单Array.prototype.map意愿正常工作:

 var data = [{ id: 3, name: 'Axe', location: 'alkt' }, { id: 5, name: 'Roy', location: 'grelad' }] var result = data.map(function(obj) { return { id: obj.id, name: obj.name }; }); alert(JSON.stringify(result, null, 4)); 



Answer 2:

在undescorejs使用 http://underscorejs.org/#pick或省略 http://underscorejs.org/#omit

_.pick({name: 'moe', age: 50, userid: 'moe1'}, 'name', 'age');
=> {name: 'moe', age: 50}
_.pick({name: 'moe', age: 50, userid: 'moe1'}, function(value, key, object) {
  return _.isNumber(value);
});
=> {age: 50}


Answer 3:

你想要删除的每个项目的位置

var data_new = _.map(data, function(item) {
  return _.omit(item, 'location');
});


Answer 4:

如果你想要的是删除阵列从对象的属性,你可以只delete它们,同时以迭代forEach

var data_new = data;
data_new.forEach(function(obj){ delete obj.location; /* or any other */ });


Answer 5:

$scope.data_new = [];
for(i in $scope.data){
  $scope.data_new.push(
   { id: $scope.data[i].id, name: $scope.data[i].name }
  )
}


文章来源: Creating new javascript Object form existing one