我错过了一个选项,如何使用map
中的List
来获取Immutable.js
函数中的索引号:
var list2 = list1.map(mapper => { a: mapper.a, b: mapper.index??? }).toList();
map()
返回Iterable<number, M>
。有什么优雅的方式来满足我的需求吗?
答案 0 :(得分:331)
您将能够通过其第二个参数获取index
API的当前迭代map
。
另请参阅: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map
<强>参数强>
回调 - 产生新数组元素的函数,有三个参数:
1)currentValue
当前元素在数组中处理。2)指数
数组中正在处理的当前元素的索引。3)阵列
调用了数组映射。
示例:强>
var list = [ 'h', 'e', 'l', 'l', 'o'];
list.map((currElement, index) => {
console.log("The current iteration is: " + index);
console.log("The current element is: " + currElement);
console.log("\n");
return 'X';
});
<强>输出:强>
当前迭代次数为:0
当前元素为:h当前迭代是:1
当前元素是:e当前迭代是:2
当前元素是:l当前迭代是:3
当前元素是:l当前迭代是:4
当前元素是:o
答案 1 :(得分:11)
Array.prototype.map()
索引:一个用户可以通过回调函数的第二个参数访问索引Array.prototype.map()
。这是一个示例:
const array = [1, 2, 3, 4];
const map = array.map((x, index) => {
console.log(index);
return x + index;
});
console.log(map);
Array.prototype.map()
的其他参数:Array.map()
的第二个参数是一个对象,它将是回调函数的this
值。请记住,您必须使用常规function
关键字来声明回调,因为箭头函数自身没有与this
关键字绑定。 / li>
例如:
const array = [1, 2, 3, 4];
const thisObj = {prop1: 1}
const map = array.map( function (x, index, array) {
console.log(array);
console.log(this)
}, thisObj);
答案 2 :(得分:1)
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr.map((myArr, index) => {
console.log(`your index is -> ${index} AND value is ${myArr}`);
})
> output will be
index is -> 0 AND value is 1
index is -> 1 AND value is 2
index is -> 2 AND value is 3
index is -> 3 AND value is 4
index is -> 4 AND value is 5
index is -> 5 AND value is 6
index is -> 6 AND value is 7
index is -> 7 AND value is 8
index is -> 8 AND value is 9
答案 3 :(得分:0)
使用Ramda:
import {addIndex, map} from 'ramda';
const list = [ 'h', 'e', 'l', 'l', 'o'];
const mapIndexed = addIndex(map);
mapIndexed((currElement, index) => {
console.log("The current iteration is: " + index);
console.log("The current element is: " + currElement);
console.log("\n");
return 'X';
}, list);