function whatTheHeck(obj){
var arr = []
for(o in obj){
arr.concat(["what"])
}
return arr
}
whatTheHeck({"one":1, "two": 2})
concat 函数完全无法执行任何操作。但是如果我在 Firebug 中的该行上放置一个断点并将该行作为 watch 运行,它就可以正常工作。 for循环迭代了两次,但最终arr仍然等于[]。
最佳答案
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 数组方法有点令人困惑的事情之一。有些修改原始数组,有些则不修改,并且没有命名约定来知道哪些修改,哪些不修改。您只需阅读并了解哪种方式有效即可。
关于javascript,这个函数怎么可能返回一个空数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7962953/