我对'key'的价值来自哪里感到困惑。当我在console.log中时,contactsList中的每个对象都有一个键
当我生成contactsOnly时(通过返回地图中的每个元素),我只得到一个没有任何键的联系人数组。
如果我然后调用addKeys(contactsOnly),我最终会得到一个OBJECT,而不是一个数组,并且对象已编号。密钥未定义。
map函数的索引是否以某种方式传递给addKeys?
const firstNames = ['Emma','Noah','Olivia','Liam','Ava','William','Sophia']
const lastNames = ['Smith','Jones','Brown','Johnson','Williams']
// generate a random number between min and max
const rand = (max, min = 0) => Math.floor(Math.random() * (max - min + 1)) + min
// generate a name
const generateName = () => `${firstNames[rand(firstNames.length - 1)]} ${lastNames[rand(lastNames.length - 1)]}`
// generate a phone number
const generatePhoneNumber = () => `${rand(999, 100)}-${rand(999, 100)}-${rand(9999, 1000)}`
// create a person
const createContact = () => ({name: generateName(),
phone: generatePhoneNumber()})
// add keys to based on index
const addKeys = (val, key) => ({key, ...val})
// create an array of length NUM_CONTACTS
const contactList = Array.from({length: 5}, createContact).map(addKeys)
console.log(contactList)
const contactsOnly = Array.from({length: 5}, createContact).map(i=>i)
console.log(contactsOnly)
const contactsAdded =addKeys(contactsOnly)
console.log(contactsAdded)
答案 0 :(得分:4)
直接回答这个问题:
map函数的索引是否以某种方式传递给addKeys?
是
数组的.map
method接受将传递三个参数的回调:
因为你的函数addKeys
有两个参数,并且你直接将它传递给map,它正在接收它的key
参数的当前索引(因为那是第二个位置的参数)。