【发布时间】:2014-04-20 03:17:08
【问题描述】:
我需要处理一些包含undefined 值的数组,如下所示:
[ 1, 1, 1, 1, 1, , 1, 1 ]
[ 1, , 1, , , 1, 1 ]
[ 1, , , , , 1, 1 ]
我需要实现的是不是删除 undefined 值,但我需要用零替换它们。
我尝试使用underscore.js 来实现这一点;没有成功。
以下是我的解决方案尝试:
binarymap = _.map(binarymap, function(curr){
// let's replace all undefined with 0s
if(_.isUndefined(curr)) {
return 0;
}
return curr;
});
不幸的是,它不起作用。 underscore.js 的函数 _.map 完全忽略了 undefined 的值。
有什么想法吗?优雅的解决方案?
【问题讨论】:
-
我认为你不能使用
map函数,我在 chrome 中尝试过[ 1, , , , , 1, 1 ].map(function(){console.log(arguments);});并且我只有 3x 输出而不是 8 左右 -
@EricG 正是,这就是为什么我想知道是否有一个好的选择
-
我怀疑下划线使用了所有可用的最新数组方法,我很确定
map、filter等都忽略了undefined值。 -
太脏了,但我不得不分享:
var arr = [ 1, 1, 1, 1, 1, , 1, 1 ]; arr = JSON.parse(JSON.stringify(arr).replace(/null/g,0));
标签: javascript arrays list map underscore.js