创建新的javascript对象形式现有的

时间:2015-07-07 08:48:08

标签: javascript json angularjs object underscore.js

我的原始对象如下。我只需要从现有属性中提取几个属性并创建新对象。

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对象。

5 个答案:

答案 0 :(得分:4)

如果您想要提取的属性很少,那么简单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));

答案 1 :(得分:2)

在不受约束的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}

答案 2 :(得分:1)

您要删除每个项目的位置

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

答案 3 :(得分:0)

如果你想要的只是从数组中的对象中删除属性,那么在使用delete进行迭代时,你可以只forEach

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

答案 4 :(得分:0)

    obj, created = Person.objects.get_or_create(first_name='John', last_name='Lennon',
              defaults={'birthday': date(1940, 10, 9)})