为什么javascript会更改Array.push上的数据类型?

BOM*_*MEz 0 javascript

我正在研究一个简单的小javascript编码挑战,但遇到了一些我在任何地方都找不到的奇怪行为.也许有人可以指出我说这是预期的行为?

myIntegerArray = [1,2,3,4];
b = new Array();

for(var v in a)
{
    b.push(v);
}
console.log(b); // returns ["1","2","3","4"]. Note String result
Run Code Online (Sandbox Code Playgroud)

如果我要使用,forEach()但我得到一个数组回来:

a.forEach(function(element,index,ay)
    {
        b.push(element)
    });
//a console.log(b) will return [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

m59*_*m59 5

你正在推动关键名称,而不是价值.你需要这样做:

b.push(a[v]);
Run Code Online (Sandbox Code Playgroud)

这可能有助于您理解:

for (var key in obj) {
  var value = obj[key];
  arr.push(value);
}
Run Code Online (Sandbox Code Playgroud)