如何从另一个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(),以便循环遍历每个对象并添加到新列表,但这似乎只是向数组广告添加新项目而不是数组的新对象。理想情况下,不必循环遍历成千上万的列表对象以添加到另一个列表也不错,这是一种理想的大规模添加方法。
答案 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)