在此说明在.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])
}
}
}
}
}
答案 0 :(得分:2)
.map(z => z.name)
是以下简称:
.map(z => {
return z.name;
})
因此,当您只打算在函数内部编写一行,而这是一个return语句时,则可以使用此速记。
答案 1 :(得分:1)
这只是将对象数组转换为包含每个元素的name
的字符串数组。
如果您在数组函数中的=>
之后编写表达式,它将返回该表达式。
箭头功能可以具有简洁的正文或通常的 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