增进对地图函数()和语法的理解

时间:2019-11-14 15:44:40

标签: javascript

考虑以下代码:

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数组中的每个元素?

2 个答案:

答案 0 :(得分:1)

MDN文档指定应传递的功能类型,例如签名。为了进行描述,他们使用了一个名为回调的名称函数。 任何命名或匿名的函数都可以完成工作。

var new_array = arr.map(function callback(currentValue[, index[, array]]) {
    // Return element for new_array
}[, thisArg])

这里的索引和数组是可选的

enter image description here

第一个问题是

对于您提到的第二点,该项目映射到当前值,因此也是。为了进一步了解如何使用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))