что означает var в массиве .prototype .map ()

Я новичок в создании анонимных функций и использовании карты, что означает ...i в следующих строках кода. тиа

const airlines = this.state.airlines.map(i => ( { ...i, editing : this.state.editing && i===item } ) )


person Rain Ramos    schedule 03.06.2019    source источник
comment
Это оператор распространения. developer.mozilla.org/en-US/docs/ Интернет / JavaScript / Справочные материалы /   -  person johnborges    schedule 03.06.2019
comment
т.е. { ...{a: 1, b: 2}, c: 3 } равно { a: 1, b:2, c:3 }, а [ ...[1, 2, 3], 4 ] равно [1, 2, 3, 4]   -  person Julian Liu    schedule 03.06.2019
comment
@ user202729 да, есть, присвоение выполняется ключам объекта, который будет возвращен обратным вызовом map   -  person Kaiido    schedule 03.06.2019
comment
@Kaiido. После повторного прочтения связанных вопросов и ответов, похоже, что answer включает синтаксис распространения для объекта, но не для вопроса. Возможно, следует изменить название вопроса.   -  person user202729    schedule 03.06.2019
comment
@ user202729 в ​​настоящее время у нас нет возможности узнать, что такое i. Связанный вопрос касается наиболее распространенных случаев (объекты и массивы), я сомневаюсь, что OP использует экзотический объект, у которого есть собственный Symbol.iterator.   -  person Kaiido    schedule 03.06.2019


Ответы (1)


Он известен как синтаксис распространения, а в текущий контекст включает в себя копирование объекта. Это то же самое, что и это:

const airlines = this.state.airlines.map(object => {
    object.editing = this.state.editing && object === item;
    return object;
});

Итак, мы создаем неглубокую копию объекта и добавляем к нему свойства. Это цель синтаксиса распространения - сделать неглубокую копию или собрать элементы для неглубокой копии (известный как синтаксис отдыха - собирает остальные элементы). Вот упрощенный пример синтаксиса распространения:

const arr = [{
  name: "Jack"
}, {
  name: "Joe"
}];    
const res = arr.map(e => ({ ...e,
  age: Infinity
}));    
console.log(res);
.as-console-wrapper {
  max-height: 100% !important;
  top: auto;
}

person Jack Bashford    schedule 03.06.2019