一个例子:
var numbers = [1, 2, 3, 4];
var filteredNumbers = numbers.map(function(num, index) {
if(index < 3) {
return num;
}
});
// filteredNumbers is [1, 2, 3, undefined]
分析原因:
因为 map 方法总是需要有返回值,如果你没有给一个明确的返回值,那么返回值将是 undefined。
换句话说,你不能用 map 生成一个不同长度的新数组。(map 的原数组是多少长度,返回的数组就有多少长度)
见下图,一一对应的关系:
解决:
- 建议配套使用 filter,移除不需要的元素。(在使用 map 前或者后都可以)
- 或者只用 filter (如果可以)