Создать копию массива, но только с конкретными полями - PullRequest
0 голосов
/ 31 октября 2019

У меня есть такой массив с 1000+ строками: enter image description here

Теперь мне нужно создать новый массив (с именем $ scope.roleUsers) и копировать только deptCode и roleName в новый массив

Я использовал slice , но его можно использовать для выбора значения по индексу, но здесь мне нужновставьте конкретное поле по имени в новый массив. за исключением этого:

 $scope.roleUsers = [{deptCode: "8", roleName : "Deo Role"}, {deptCode: "4", roleName : "BMRole"}]

Пожалуйста, помогите здесь, спасибо заранее.

Ответы [ 4 ]

3 голосов
/ 31 октября 2019

.slice только создает копию массива (возможно, из одного индекса в другой), он не меняет ни один из элементов - вместо этого вы хотите .map:

const result = $scope.deoUsers.map(({ deptCode, roleName }) => ({ deptCode, roleName }));
1 голос
/ 31 октября 2019

Вы можете использовать метод Array.map для копирования определенных элементов.

var demoObject = [{
    fname: 'John',
    lname: 'Doe' ,
    rollNo: 123
  }, {
    fname: 'John',
    lname: 'Doe' ,
    rollNo: 345
  }];

var requiredRes = {
  Objects: demoObject.map(function(v) {
    return {
      rollNo: v.rollNo
    };
  })
}

console.log(requiredRes);

Ссылка: https://stackoverflow.com/a/38050206/10971575

1 голос
/ 31 октября 2019

Вы можете использовать map для получения определенных полей из данных массива, как показано ниже -

let deoUsers = [{deptCode: "8", roleName : "Deo Role", userName: '123'}, {deptCode: "4", roleName : "BMRole", userName: '456'}]
  , roleUsers = deoUsers.map(({deptCode, roleName}) => ({deptCode, roleName}))

console.log(roleUsers)
1 голос
/ 31 октября 2019

Вы можете использовать функцию array.map и в функции обратного вызова вернуть объект, который имеет только необходимые ключи

let arr = [{
  deptCode: "8",
  roleName: "Deo Role",
  id: 1
}, {
  id: 2,
  deptCode: "4",
  roleName: "BMRole"
}]


let newArr = arr.map((item) => {
  return {
    deptCode: item.deptCode,
    roleName: item.roleName

  }
});

console.log(newArr)
...