创建新的JSON对象列表,包含来自另一个对象列表

时间:2018-05-31 12:57:47

标签: javascript angularjs json

如何从另一个JSON列表中创建仅特定对象字段(列(?))的JSON列表?

我需要创建一个JSON对象列表,其中字段和新列表的值取自另一个现有列表,其中现有字段是我想要的特定字段。

例如,用户将选择CSV文件,我将数据提取到JSON列表中(使用papaparse),此CSV可以包含任意数量的列,但我只需要4个。这4列将始终具有相同的标题名称,当我将数据传递给JSON时,它将成为字段名称。如何仅使用来自字段的所有值创建新列表,例如“IdApplication”和“AccountNumber”?

所以,如果我有一个来自用户的JSON,如:

$scope.TestList = [
   {id: 1, name: 'Bob', age: 23, bio: 'Duck Toaster'},
   {id: 2, name: 'Tom', age: 69, bio: 'Banana Sharks'}
];

如何只使用id和age字段并创建一个新列表:

$scope.NewTestList = [
   {id: 1, age: 23},
   {id: 2, age: 69}
];

我已经查看了.push(),以便循环遍历每个对象并添加到新列表,但这似乎只是向数组广告添加新项目而不是数组的新对象。理想情况下,不必循环遍历成千上万的列表对象以添加到另一个列表也不错,这是一种理想的大规模添加方法。

4 个答案:

答案 0 :(得分:3)

您可以使用Array map()方法;

$scope.NewTestList = $scope.TestList.map(el => ({
    id: el.id,
  name: el.name
}));

答案 1 :(得分:0)

您可以遍历$scope.TestList中的每个对象,只在$scope.NewTestList中推送您想要的内容

$scope.NewTestList = [];
angular.forEach($scope.TestList, function (testItem) {
    $scope.NewTestList.push({
        'id': testItem.id,
        'age': testItem.age
    });
});

答案 2 :(得分:0)

您可以尝试类似下面的代码

let newTestList = TestList.map(obj => {
                     return { id: obj.id, age: obj.age } 
                  }

这将映射您的数组并返回一个具有相应属性和值的新数组

答案 3 :(得分:0)

您可以使用forEach语法以非常简单的方式完成:

var arr1 = [{ id: 1, name: 'sasa', age: 13 }, 
            { id: 2, name: 'sfsdasa', age: 21 }, 
            { id: 3, name: 'dsdssasa', age: 14 }];
var arr2 = []; // create an empty array
arr1.forEach(function(arr) {
    arr2.push({id:arr.id,age:arr.age}) // push in the array
}, this);
console.log(arr2)
相关问题