js中以(_,1)做为传给map遍历函数的参数是什么意思?

JavaScript016

js中以(_,1)做为传给map遍历函数的参数是什么意思?,第1张

数组(array)的map方法的第一个参数是遍历的当前值,第二个参数则是索引值,而你这段代码并不需要用到当前值,所以随便用了个_符号代替,在js中,_是合法的名字(可用作变量名、参数名、对象名等),你也可以用其他名字代替,比如 a、b、c、d……等等,这里用_应该只是编程者的个人习惯,并没有特殊含义。

Array(5)是建立一个5元素的空数组

fill(null)是用null值填充空数组

map((_,i)=>i+1)是遍历数组,把数组元素的索引值+1后作为数组的新元素值返回

比如原数组是 [null,null,null,null,null]

那么新数组就是 [1,2,3,4,5]

首先,你说的是后台传来,并且是map,并且用js方式。这有两个情况:

map 的值是实体类,无法遍历每条实体类的内部(js拿到键值对的值,是内存引用地址)

map 的值不是实体类,可以通过

var map = JSON.parse('${变量名}');//转为json,注意要有引号

for ( var i in map) { // i是索引

var obj = map[i]

}

=============

针对第一种情况,2个方法:

1. 后台先转为json字符串,再传给前端;

2. 通过类似java的<c:foreach这样的后台语言操作。

JS 的 forEach 和 map 方法都是 ES5 为处理数组而新增的迭代方法,区别在于 map 方法返回一个新数组,而 forEach 方法没有返回值。举个例子:

var arr = [1, 2, 4, 7, 8]

// 目标:上述数组里的每一项偶数都+1,使整个数组里都是奇数。

// map 方法

var result = arr.map(function(item) {

    return item % 2 === 0 ? item + 1 : item

})

console.log(result)  // [1, 3, 5, 7, 9]

// forEach 方法

var result = []

arr.forEach(function(item) {

    if (item % 2 === 0) {

        item += 1

    }

    result.push(item)

})

console.log(result)  // [1, 3, 5, 7, 9]

从上述例子可以看出,使用 map 方法要方便的多,代码也更优雅。这里需要注意的是这两个方法不支持 IE9 以下的 IE 浏览器,要兼容的话一般用 for 循环来实现:

// for 循环方法

var result = []

for (var i = 0 i < arr.length i++) {

    if (arr[i] % 2 === 0) {

        arr[i] += 1

    }

    result.push(arr[i])

}

console.log(result)  // [1, 3, 5, 7, 9]