Создать новый список объектов JSON, состоящий из определенных полей из другого списка объектов - PullRequest
0 голосов
/ 31 мая 2018

Как создать список 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 голосов
/ 31 мая 2018

Вы можете сделать это очень просто, используя синтаксис 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)
0 голосов
/ 31 мая 2018

Вы можете перебирать каждый объект в $scope.TestList и вставлять только то, что вы хотите в вашем $scope.NewTestList

$scope.NewTestList = [];
angular.forEach($scope.TestList, function (testItem) {
    $scope.NewTestList.push({
        'id': testItem.id,
        'age': testItem.age
    });
});
0 голосов
/ 31 мая 2018

Вы можете попробовать что-то вроде приведенного ниже кода

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

Это отобразит ваш массив и вернет новый массив с соответствующими свойствами и значениями

0 голосов
/ 31 мая 2018

Вы можете использовать метод Array map();

$scope.NewTestList = $scope.TestList.map(el => ({
    id: el.id,
  name: el.name
}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...