function whatTheHeck(obj){
var arr = []
for(o in obj){
arr.concat(["what"])
}
return arr
}
whatTheHeck({"one":1, "two": 2})
concat函数完全没有做任何事情。但是如果我在Firebug中的那一行放置断点并将该线作为手表运行它可以正常工作。并且for循环迭代两次,但最后arr仍然等于[]。
答案 0 :(得分:46)
Array.concat
创建一个新数组 - 它不会修改原始数组,因此您当前的代码实际上什么都不做。它不会修改arr
。
因此,您需要将功能更改为此功能才能确保其正常工作:
function whatTheHeck(obj){
var arr = [];
for(o in obj){
arr = arr.concat(["what"]);
}
return arr;
}
whatTheHeck({"one":1, "two": 2});
如果您只想在阵列的末尾添加一个项目,.push()
是一个更好的方法:
function whatTheHeck(obj){
var arr = [];
for(o in obj){
arr.push("what");
}
return arr;
}
whatTheHeck({"one":1, "two": 2});
这是我发现Javascript数组方法有点混乱的事情之一。有些修改了原始数组,有些则没有,并且没有命名约定来知道哪些做什么,哪些没有。你只需要阅读并了解哪种工作方式。