Динамическое управление индексом массива в javascript, как мы делаем это для объекта - PullRequest
1 голос
/ 29 января 2020

Этот вопрос в основном задают для redux state manipulation ease if one has to return array instead of object in redux array Для манипулирования динамическим c свойством объекта, мы делаем это

const myObj = {
   name : 'any name',
   email : 'any email',
   dob : 'any dob'
}

Если я хочу вернуть новый объект после манипулирования им и хочу манипулировать свойства динамически из одной функции, я могу сделать это легко

return {
  ...myObj,
  [action.dynamicProp] : action.anyValue
}

Но если я хочу сделать то же самое с массивом, я не могу сделать это с помощью синтаксиса распространения

const myArr = ['value1','value2','value3'];
return [...myArr,?????????]

Так возможно ли это сделать с помощью распространенного синтаксиса? (Это можно сделать без оператора распространения, но смысл в том, чтобы делать это с синтаксисом распространения)

1 Ответ

3 голосов
/ 29 января 2020

Вы можете сделать это с распространением, но вы также должны .slice части массива до и после элемента, который вы хотите заменить, и распространить их в новый массив. Например, чтобы заменить элемент с индексом 1:

const myArr = ['value1','value2','value3'];
const index = 1;
const output = [
   ...myArr.slice(0, index),
   'newItem',
   ...myArr.slice(index + 1),
];
 console.log(output);

Вы также можете сделать поверхностную копию массива и присвоить индексу, но это менее функционально:

const myArr = ['value1','value2','value3'];
const index = 1;
const output = [...myArr];
output[index] = 'newItem';
 console.log(output);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...