Для array.map нужен индекс, но не нужно currentValue - PullRequest
0 голосов
/ 28 июня 2019

У меня есть пустой массив, который я хочу заполнить строками. Строки будут использовать значение index для подсчета. Например:

'item 1'
'item 2'
'item 3'

У меня есть рабочая map функция, которая сделает это:

let items  = new Array(100).fill().map((item, index) => {
 return `item ${index + 1}` 
})

Несмотря на то, что это заполняет массив строками, проходящими итерациями по значению индекса, я также передаю аргумент item в функцию map, которая является currentValue (как указано в MDN ). Я на самом деле не использую это значение.

Видя, как это значение имеет для передачи, я попытался передать null, но это дало мне ошибку. Я также пытался передать пустой объект, как в .map(( {}, index) => ...)}. честно говоря, я не знаю, в чем смысл пустого объекта, но я решил попробовать. Излишне говорить, что это не сработало.

Мой вопрос - что вы будете делать, если вы не будете использовать такой обязательный аргумент, как этот? Могу ли я передать туда какое-то неопределенное или бесполезное значение? Должен ли я использовать другую функцию, кроме map, чтобы сделать это?

Я мог бы сделать это с помощью for loop:

let items = new Array(100).fill()

for (let index = 0; index < items.length; index++ {
    items[index] = `item ${index + 1}`
}

Будет ли цикл for лучшим выбором в этом случае?

Ответы [ 4 ]

2 голосов
/ 28 июня 2019

fill + map - это отходы, когда вы можете просто использовать from -

const result =
  Array.from(Array(10), (_,i) => `item ${i + 1}`)
  
console.log(result)
// [ "item 1"
// , "item 2"
// , "item 3"
// , "item 4"
// , "item 5"
// , "item 6"
// , "item 7"
// , "item 8"
// , "item 9"
// , "item 10"
// ]
1 голос
/ 28 июня 2019

Ссылаясь на ваш код

let items  = new Array(100).fill().map((item, index) => {
 return `item ${index + 1}` 
})

Элемент будет "неопределен", и да, вам нужно передать элемент (currentValue), поскольку это обязательное поле.

В одной строке это можетбыть достигнуто:

let items  = Array.from(Array(100).keys()).map( item => `item ${item+1}`);

без карты

let items  = Array.from(Array(100).keys(), item => `item ${item+1}`);
0 голосов
/ 28 июня 2019

Неиспользованный аргумент должен быть присвоен _:

let items = new Array(100).fill().map((_, index) => `item ${index + 1}`);
0 голосов
/ 28 июня 2019

Вам не нужно беспокоиться о неиспользованном аргументе.Если вы действительно возражаете, попробуйте следующий код:

var items  = new Array(...new Array(100).keys()).map(index => {
 return `item ${index + 1}` 
});
console.log(items);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...