use*_*291 51 javascript node.js
让我说我有
myArray = ['item1', 'item2']
Run Code Online (Sandbox Code Playgroud)
我试过了
for (var item in myArray) {console.log(item)}
Run Code Online (Sandbox Code Playgroud)
它打印0 1
我希望有item1 item2
是否有任何其他语法无需使用
for (var i = 0; i < myArray.length; i++)
Run Code Online (Sandbox Code Playgroud)
mak*_*ova 105
您可以使用 Array.forEach
var myArray = ['1','2',3,4]
myArray.forEach(function(value){
console.log(value);
});
Run Code Online (Sandbox Code Playgroud)
I a*_*ica 48
您可能想要的是一个相对较新的构造,用于枚举可迭代对象的值的明确目的:for...of
let myArray = ["a","b","c","d"];
for (let item of myArray) {
console.log(item);
}
Run Code Online (Sandbox Code Playgroud)
...与...不同,枚举属性名称(在数组的情况下可能是1个数字索引).您的循环显示意外结果,因为您没有使用属性名称通过括号表示法获取相应的值...但您可以:for...in
let myArray = ["a","b","c","d"];
for (let key in myArray) {
let value = myArray[key]; // get the value by key
console.log("key: %o, value: %o", key, value);
}
Run Code Online (Sandbox Code Playgroud)
1 遗憾的是,某些人可能已将可枚举属性添加到数组或其原型链中,这些属性不是数字索引...或者他们可能已在临时范围内分配了一个未分配索引的索引.这些问题都解释得很好这里.主要的外卖是,这是最好的循环明确从0
到array.length - 1
,而不是使用for...in
.
所以,这不是(正如我原先认为的那样)一个学术问题,即:
如果没有对方面的实用性,是它能够避免
length
遍历数组时?
根据你的评论(强调我的):
[...]为什么我需要计算数组的大小,而解释器可以知道它.
你有一种被误导的厌恶.它不是即时计算的; 只要数组的长度发生变化,它就会更新.你不会通过避免它来获得性能提升(除了缓存数组长度而不是访问属性):Array.length
现在,即使你确实获得了一些边际绩效增长,我怀疑它是否足以证明处理上述问题的风险.
小智 5
要打印“ item1”,“ item2”,此代码将起作用。
var myarray = ['hello', ' hello again'];
for (var item in myarray) {
console.log(myarray[item])
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
118906 次 |
最近记录: |