考虑以下代码:
var watchList = [
{
"Metascore": "70",
"imdbRating": "8.3",
"imdbVotes": "972,584",
"imdbID": "tt0372784",
"Type": "movie",
"Response": "True"
},
{
"Metascore": "83",
"imdbRating": "7.9",
"imdbVotes": "876,575",
"imdbID": "tt0499549",
"Type": "movie",
"Response": "True"
}
];
console.log(watchList.length);
const rating = watchList.map((function test (item) {
console.log(item);
return {
title: item["Title"],
rating: item["imdbRating"]
};
}));
console.log(JSON.stringify(rating));
MDN链接
在我的特定代码块中,关于map()
语法只有几个问题。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])
使用地图:
`const rating = watchList.map((function test (item) {}`
在这种情况下,我引用MDN JavaScript文档是正确的:
1)test
是提供给map()
方法的 callback 参数的自变量吗?它没有声明 callback 是一个可选参数,所以我对上面的MDN语法感到困惑,当传递没有名称的匿名函数时,控制台中没有错误。
2)item
是提供给currentValue
方法的map()
参数的参数,它是watchList数组中的每个元素?
答案 0 :(得分:1)
MDN文档指定应传递的功能类型,例如签名。为了进行描述,他们使用了一个名为回调的名称函数。 任何命名或匿名的函数都可以完成工作。
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])
这里的索引和数组是可选的
第一个问题是
对于您提到的第二点,该项目映射到当前值,因此也是。为了进一步了解如何使用javascript将函数传递给方法或函数编程概念。
答案 1 :(得分:0)
正如您在MDN中看到的那样:
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])
就像写
var new_array = arr.map(function(item){.....})
[]中的值是可选的,最后一个是绑定“ this”
尤其是如果您将使用箭头功能
var new_array = arr.map(item=>{})
您还可以创建一个函数
function test(item){.....}
并在回调中使用
var new_array = arr.map(test(item))