有人可以在这里向我解释.map()方法的工作吗

时间:2019-03-26 10:34:03

标签: javascript

在此说明在.map()方法内使用arrow函数的方法。

let mFunc= function(fname, data) {
    for (i in data.shop) {              //iterating through the JSON data
        if (data.shop[i].name == fname) {
            let dataSv = data.shop[i];

            // We found a match, display details
            for (y in dataSv){   
                if (typeof dataSv[y][0] === 'object') {
                    dataSv[y] = dataSv[y].map(z => z.name) // explain me this part
                }

                alert(i + " : " + dataSv[y])

            }
        }
    }
}

}

4 个答案:

答案 0 :(得分:2)

.map(z => z.name)

是以下简称:

.map(z => {
  return z.name;
})

因此,当您只打算在函数内部编写一行,而这是一个return语句时,则可以使用此速记。

答案 1 :(得分:1)

这只是将对象数组转换为包含每个元素的name的字符串数组。

如果您在数组函数中的=>之后编写表达式,它将返回该表达式。

documentation

  

箭头功能可以具有简洁的正文或通常的 block正文

  在简洁的正文中,仅指定一个表达式,该表达式成为隐式返回值。在块体中,必须使用显式的return语句

dataSv[y] = dataSv[y].map(z => z.name)

等同于

dataSv[y] = dataSv[y].map(z => {
    return z.name;
})

答案 2 :(得分:0)

检查此示例。可能会更清楚

dataSv = [
  [
    {name: 'one', id: 1},
    {name: 'two', id: 2},
    {name: 'three', id: 3}
  ],
  [
    {name: 'eleven', id: 11},
    {name: 'twelve', id: 12},
    {name: 'thirteen', id: 13}
  ],
  [
    {name: 'twenty-one', id: 21},
    {name: 'twenty-two', id: 22},
    {name: 'twenty-three', id: 23}
  ]
]

dataSv[0] = dataSv[0].map(z => z.name)
dataSv[1] = dataSv[1].map(z => z.name)
dataSv[2] = dataSv[2].map(z => z.name)

console.info(dataSv)

答案 3 :(得分:-1)

它将仅返回数组每个元素的“ name”属性,而不是原始对象。

基本上,=>右侧的任何代码求值都会成为.map()进行迭代的每个数组元素的返回值。

有关更多信息和可运行的演示,请参见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map