map() 函数中的索引
Index inside map() function
我缺少一个选项如何使用 Immutable.js
中的 List
在 map
函数中获取索引号:
var list2 = list1.map(mapper => { a: mapper.a, b: mapper.index??? }).toList();
Documentation shows即map()
returnsIterable<number, M>
。有什么优雅的方法可以满足我的需求吗?
您将能够通过 map
方法的第二个参数获取当前迭代的 index
。
示例:
const 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 currElement; //equivalent to list[index]
});
输出:
The current iteration is: 0 <br>The current element is: h
The current iteration is: 1 <br>The current element is: e
The current iteration is: 2 <br>The current element is: l
The current iteration is: 3 <br>The current element is: l
The current iteration is: 4 <br>The current element is: o
另请参阅: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map
Parameters
callback -
Function that produces an element of the new Array, taking three arguments:
1) currentValue
The current element being processed in the array.
2) index
The index of the current element being processed in the array.
3) array
The array map was called upon.
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()
的其他参数:
- 回调函数的第三个参数公开了调用 map 的数组
Array.map()
的第二个参数是一个对象,它将作为回调函数的 this
值。请记住,您必须使用 常规 function
关键字 才能声明回调,因为箭头函数没有自己的绑定到 this
关键字。
例如:
const array = [1, 2, 3, 4];
const thisObj = { prop1: 1 }
const map = array.map((x, index, array) => {
console.log(array);
console.log(this)
}, thisObj);
使用 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);
- 假设你有一个像
这样的数组
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
我缺少一个选项如何使用 Immutable.js
中的 List
在 map
函数中获取索引号:
var list2 = list1.map(mapper => { a: mapper.a, b: mapper.index??? }).toList();
Documentation shows即map()
returnsIterable<number, M>
。有什么优雅的方法可以满足我的需求吗?
您将能够通过 map
方法的第二个参数获取当前迭代的 index
。
示例:
const 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 currElement; //equivalent to list[index]
});
输出:
The current iteration is: 0 <br>The current element is: h
The current iteration is: 1 <br>The current element is: e
The current iteration is: 2 <br>The current element is: l
The current iteration is: 3 <br>The current element is: l
The current iteration is: 4 <br>The current element is: o
另请参阅: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map
Parameters
callback - Function that produces an element of the new Array, taking three arguments:
1) currentValue
The current element being processed in the array.2) index
The index of the current element being processed in the array.3) array
The array map was called upon.
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()
的其他参数:
- 回调函数的第三个参数公开了调用 map 的数组
Array.map()
的第二个参数是一个对象,它将作为回调函数的this
值。请记住,您必须使用 常规function
关键字 才能声明回调,因为箭头函数没有自己的绑定到this
关键字。
例如:
const array = [1, 2, 3, 4];
const thisObj = { prop1: 1 }
const map = array.map((x, index, array) => {
console.log(array);
console.log(this)
}, thisObj);
使用 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);
- 假设你有一个像 这样的数组
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