Javascript数组映射方法回调参数

时间:2014-05-13 04:24:03

标签: javascript arrays

Javascript将地图方法语法描述为:

arr.map(callback [,thisArg])

参数

  • callback - 生成新数组元素的函数,带有三个参数:
  • currentValue - 数组中正在处理的当前元素。
  • index - 数组中正在处理的当前元素的索引。
  • array调用了数组映射。
  • thisArg - 执行回调时使用的值。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

我可以编写一个JS函数来大写字符串数组中每个单词的第一个字母,如下所示:

capyyIt(['john', 'nelson mandela', 'james booth'])     // returns ['John', 'Nelson mandela', 'James booth']

function capyyIt(names) {
  return names.map(function capIt(curr) { return curr[0].toUpperCase() + curr.slice(1).toLowerCase(); });
}
  1. 如何用4个参数编写capIt(即使我可能没有全部使用它们)?我问,因为我尝试了4个参数,但它似乎没有用。
  2. 如何将capIt写为非立即调用的函数表达式 - 如:

    function capyyIt(names) {
        return names.map(capIt);
    }
    function capIt(curr,index,arr) {
        return curr[0].toUpperCase() + curr.slice(1).toLowerCase();
    }
    

1 个答案:

答案 0 :(得分:2)

我不清楚你在问什么,但让我们看看你是否正在寻找:

function capyyIt(names) {
  names.map(function(value, index, collection){
     capIt(val);
  })
}   

function capIt(name) {
  return name.toUpperCase() + curr.slice(1).toLowerCase();
}

map函数接受一个使用value,index和collection作为参数的回调参数,你不能改变它。因此,如果要对要映射的每个值执行某些操作,则应在回调函数中执行此操作。