Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery.map()和未定义_Javascript_Jquery_Map - Fatal编程技术网

Javascript jQuery.map()和未定义

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的实用程序方法时,
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);})