Как изменить массив в стиле функционального программирования? - PullRequest
0 голосов
/ 08 марта 2019

Как изменить arr ['first'] каждого объекта в функциональном стиле программирования, используя forEach, map, Reduce, Filter и т. Д.

let value = 'abc'
let arr = [{
 'first': 'aaa' 
},{
 'first': 'bbb' 
},{
 'first': 'ccc' 
}];

Ответы [ 4 ]

0 голосов
/ 08 марта 2019

если я вас хорошо понимаю, вы хотите изменить имя ключа 'first' в каждом объекте массива, используя карту?

, вы можете попробовать следующий код:

const value = 'abc';
const arr = [{
 'first': 'aaa' 
},{
 'first': 'bbb' 
},{
 'first': 'ccc' 
}];

const newArr = arr.map(obj => {
  if ('first' !== value) {
    Object.defineProperty(obj, value,
        Object.getOwnPropertyDescriptor(obj, 'first'));
    delete obj['first'];
  }
  return obj;
});

console.log(newArr);

или если выхотите изменить только значение first в каждом объекте:

const value = 'abc';
const arr = [{
 'first': 'aaa' 
},{
 'first': 'bbb' 
},{
 'first': 'ccc' 
}];

const newArr = arr.map(obj => ({...obj, first: value}));
console.log(newArr);
0 голосов
/ 08 марта 2019

Вы можете использовать map и создать новый массив

let value = 'abc';
let arr = [{
  'first': 'aaa'
}, {
  'first': 'bbb'
}, {
  'first': 'ccc'
}];

let newArr = arr.map(function(item) {

  return {
    first: value
  }

})

console.log(newArr)
0 голосов
/ 08 марта 2019

Вы можете использовать forEach и map для него, но уменьшение и фильтрация не предназначены для такого рода функций.Вы можете прочитать больше об этом здесь .Я использовал ES6 Arrow Function.Если вы с ними не знакомы и это выглядит странно для вас - прочитайте об этом здесь .

РЕДАКТИРОВАТЬ

Если вы просто хотите отредактироватькаждый элемент arr .

arr.forEach(item => {
    item.first = value;
}

Как и @VLAZ предложил - если вы хотите сделать это полностью функциональным способом, вы должны создать новый массив.

let newArr = arr.map(item => {
    item.first = value;
    return item;
}
0 голосов
/ 08 марта 2019

Вот неизменный способ для обновления свойства first каждого элемента в вашем массиве.Он использует Array.map() для создания нового массива и оператора распространения для копирования каждого элемента и устанавливает для свойства first значение value:

const value = 'abc';

const arr = [{ 'first': 'aaa' },{ 'first': 'bbb' },{ 'first': 'ccc' }];

const newArr = arr.map(item => ({ ...item, first: value }));

console.log(newArr);

Если вы хотите изменить исходный массив , что не очень хорошая идея с функциональной парадигмой, используйте Array.forEach() вместо:

const value = 'abc';

const arr = [{ 'first': 'aaa' },{ 'first': 'bbb' },{ 'first': 'ccc' }];

arr.forEach(item => item.first = value);

console.log(arr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...