相关疑难解决方法(0)

Array(len)初始值设定项中的未定义值

考虑:

var a = Array(3);
var b = [undefined,undefined,undefined];
Run Code Online (Sandbox Code Playgroud)

是什么原因a.mapb.map产生不同的结果?

a.map(function(){  return 0;  });  //produces -> [undefined,undefined,undefined]
b.map(function(){  return 0;  });  //produces -> [0,0,0]
Run Code Online (Sandbox Code Playgroud)

javascript arrays undefined

25
推荐指数
3
解决办法
1691
查看次数

为什么`.forEach`在密集数组上工作但在稀疏数组上不工作?

我试图理解'空'稀疏数组(例如new Array(3))和等效'空'密集数组(具有3个未定义条目的数组)之间的区别.

我可以用这两种方式创建一个包含3个未定义值的数组:

var sparse = new Array(3);
// or
var sparse = [,,,];

var dense = Array.apply(null, Array(3)); // See dense array link below
Run Code Online (Sandbox Code Playgroud)

密集阵列

如果我为其中任何一个执行console.log,结果是:

[undefined, undefined, undefined]
Run Code Online (Sandbox Code Playgroud)

如果我遍历每个数组以将其与另一个数组进行比较,它们将严格匹配:

console.log(sparse.length === dense.length);

// true

for (var i = 0; i < dense.length; i++) {
  console.log(i +':'+ (dense[i] === sparse[i]));
}

// '0:true'
// '1:true'
// '2:true'
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用.forEach(或map,reduce等),那么回调将永远不会在稀疏数组上调用,但会在密集数组上调用三次:

sparse.forEach(function(val,i){
   console.log(i +':'+ val);
});

// Nothing. No-op.

dense.forEach(function(val,i){
   console.log(i +':'+ val);
}); …
Run Code Online (Sandbox Code Playgroud)

javascript arrays

5
推荐指数
1
解决办法
125
查看次数

为什么我不能使用_.map创建一个随机数组(new Array(n),Math.random)?

我想制作一个0到1之间的随机数组,所以我试过:

var randList = _.map(new Array(5), Math.random);
Run Code Online (Sandbox Code Playgroud)

但我没有得到我预期的随机元素列表,而是:

console.log(JSON.stringify(randList));
"[null,null,null,null,null]"
Run Code Online (Sandbox Code Playgroud)

为什么我得到一个null数组而不是随机数?

javascript arrays underscore.js

4
推荐指数
1
解决办法
908
查看次数

标签 统计

arrays ×3

javascript ×3

undefined ×1

underscore.js ×1