如何使用JavaScript循环遍历数组中的所有条目?
我以为它是这样的:
forEach(instance in theArray)
Run Code Online (Sandbox Code Playgroud)
theArray
我的阵列在哪里,但这似乎是不正确的.
我被告知不要for...in
在JavaScript中使用数组.为什么不?
我在JavaScript中有一个对象:
{
abc: '...',
bca: '...',
zzz: '...',
xxx: '...',
ccc: '...',
// ...
}
Run Code Online (Sandbox Code Playgroud)
我想使用for
循环来获取其属性.我想在部分中迭代它(不是一次所有的对象属性).
使用简单的数组我可以使用标准for
循环:
for (i = 0; i < 100; i++) { ... } // first part
for (i = 100; i < 300; i++) { ... } // second
for (i = 300; i < arr.length; i++) { ... } // last
Run Code Online (Sandbox Code Playgroud)
但是如何用物体做呢?
我之前已经问过类似的问题,但这个问题有点不同.我有一个未命名的对象数组,其中包含一个命名对象数组,我需要获取"name"为"string 1"的对象.这是一个示例数组.
var array = [
{ name:"string 1", value:"this", other: "that" },
{ name:"string 2", value:"this", other: "that" }
];
Run Code Online (Sandbox Code Playgroud)
更新:我应该早些说过,但是一旦找到它,我想用一个编辑过的对象替换它.
我在我的JavaScript文件中使用了JSLint.它抛出了错误:
for( ind in evtListeners ) {
Run Code Online (Sandbox Code Playgroud)
第41行的问题字符9:for的主体应该包含在if语句中,以过滤原型中不需要的属性.
这是什么意思?
我从书中学到了你应该写这样的循环:
for(var i=0, len=arr.length; i < len; i++){
// blah blah
}
Run Code Online (Sandbox Code Playgroud)
所以arr.length
每次都不会计算.
其他人说编译器会对此做一些优化,所以你可以写:
for(var i=0; i < arr.length; i++){
// blah blah
}
Run Code Online (Sandbox Code Playgroud)
我只是想知道哪种是最好的练习方式?
我试图循环一个数组.我有以下代码:
var currnt_image_list= '21,32,234,223';
var substr = currnt_image_list.split(','); // array here
Run Code Online (Sandbox Code Playgroud)
我试图从阵列中获取所有数据.有人可以带我走正确的道路吗?
我试图循环通过以下json数组:
{
"id": "1",
"msg": "hi",
"tid": "2013-05-05 23:35",
"fromWho": "hello1@email.se"
}, {
"id": "2",
"msg": "there",
"tid": "2013-05-05 23:45",
"fromWho": "hello2@email.se"
}
Run Code Online (Sandbox Code Playgroud)
并尝试了以下
for (var key in data) {
if (data.hasOwnProperty(key)) {
console.log(data[key].id);
}
}
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,我只得到第一部分,id 1值.
有任何想法吗?
例如,像这样:
var value = someArray.indexOf(3) !== -1 ? someArray.indexOf(3) : 0
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来写这个?同样,我不是在寻找上面确切问题的答案,只是一个例子,说明何时可能在三元运算符表达式中重复操作数...
我总是假设在JavaScript中缓存数组的长度是一个好主意(特别是在for
循环的条件下),因为计算数组的长度是昂贵的.
for (var i = 0; i < arr.length; i++) { }
// vs
for (var i = 0, arrLength = arr.length; i < arrLength; i++) { }
Run Code Online (Sandbox Code Playgroud)
但是,我想也许该length
属性只是在创建和更改数组时更新.因此,阅读它不应该是一个操作太昂贵而不是读取存储在变量中的操作(与其他语言中可能需要在内存中寻找某些内容的其他方法相反,例如strlen()
在C中).
我有两个问题.我也对它是如何工作感兴趣,所以请不要用过早的优化棒打我.
假设浏览器中的JavaScript引擎.
length
在JavaScript中缓存数组的属性有什么好处吗?是否有更多的参与在对象的属性上读取局部变量?length
属性是否仅在创建和on上更改,shift()
并且pop()
类型方法不返回新数组,否则只是存储为整数?