Javascript jQuery.map()和未定义
在使用jQuery的实用程序方法时,Javascript jQuery.map()和未定义,javascript,jquery,map,Javascript,Jquery,Map,在使用jQuery的实用程序方法时,jQuery.map(),我注意到返回的数组中省略了一个未定义的返回值。这是什么原因 var letters = ['a', undefined, 'c', undefined, 'e']; console.log(letters); //["a", undefined, "c", undefined, "e"] console.log(letters.length); //5 var lettersMapped = $.map(letters, fun
jQuery.map()
,我注意到返回的数组中省略了一个未定义的返回值。这是什么原因
var letters = ['a', undefined, 'c', undefined, 'e'];
console.log(letters); //["a", undefined, "c", undefined, "e"]
console.log(letters.length); //5
var lettersMapped = $.map(letters, function(item, index){
var item = item;
return item;
});
console.log(lettersMapped); //["a", "c", "e"]
console.log(lettersMapped.length); //3
根据以下文件:
该函数可以返回:
- 转换后的值,将映射到结果数组
或null
,以删除该项undefined
- 一个值数组,它将被展平为完整数组
换句话说,这是
jQuery.map
的预期行为,可能有答案吗?函数可以返回:[……]null或undefined,以删除item@Jon请参阅下面我对文档的评论。谢谢,但我已经阅读了文档。显然,这是有意的行为。我的问题是,为什么这是预期的行为,因为这可能会产生意想不到的结果。例如,如果我希望该项未定义,该怎么办?@maxhallinan:虽然这部分的结果不是很清楚,但您也可以返回一个值数组,该数组将被展平为完整数组。所以:返回项===未定义?[未定义]:项目
。与null
相同。在任何情况下,你最初的问题都可以通过“阅读文档”得到完美的回答。为什么这是被选择的行为,只能由这个星球上的几个人——设计它的人——来明确回答。@Jon Fair。我的意思是为什么“有没有一个明显的好的理由让我错过了。”非常像你的解决方法。请将此评论作为答案发布,以便我可以接受。@maxhallinan:我不认为将上述内容复制/粘贴到另一个答案中会提供任何帮助。请随意接受这个选项。@Jon感谢您的提示--您可以始终返回[null]
或[undefined]
@maxhallian这是一种从数组中删除元素的简单方法。比如说,我有一个数字数组,我只想过滤正数:var numbers=$.map([-3,5,-2,6,8],函数(n){return n>0?n:undefined;})代码>。这比varnumbers=[];$更简洁(IMHO)。每个([-3,5,-2,6,8],函数(i,n){if(n>0){number.push(n);})代码>