array.map需要索引,但不需要currentValue

时间:2019-06-28 00:41:10

标签: javascript arrays ecmascript-6

我有一个空数组,想用字符串填充。字符串将使用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循环来做到这一点:

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

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

在这种情况下,for循环会是更好的选择吗?

4 个答案:

答案 0 :(得分:2)

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 :(得分:1)

引用您的代码

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

item将是“ undefined”,是的,您需要传递item(currentValue),因为它是必填字段。

只需一行即可实现:

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

没有地图

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

答案 2 :(得分:0)

您无需担心未使用的参数。如果您真的介意,请尝试以下代码:

var items  = new Array(...new Array(100).keys()).map(index => {
 return `item ${index + 1}` 
});
console.log(items);

答案 3 :(得分:0)

未使用的参数应分配给_

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