检查javascript数组中的数字索引

jku*_*ner 22 javascript arrays numeric multidimensional-array

我正在接收由数字索引聚合的json数据.

例如,当我在我的forloop中时,索引可能从1开始,这意味着在我的forloop中会发生错误,因为0不存在.

如何检查javascript数组中是否存在数字索引?

and*_*lrc 36

var a = [1, 2, 3], index = 2;

if ( a[index] !== void 0 ) { /* void 0 === undefined */
    /* See concern about ``undefined'' below.        */
    /* index doesn't point to an undefined item.     */
}
Run Code Online (Sandbox Code Playgroud)

  • @SammieFox如果一个开发人员创建了一个以'undefined`作为参数名称的函数,那么无论使用何种编程语言,他都值得活着,并且如果他在JS中编码,那么值得在tar中使用.FWIW,我不会因为这个原因而使用`void 0`而不是'undefined` - 它不是"防御性编码",它是自ES5以来的"偏执编码".`void 0`是语义噪音,`undefined`在语义上是正确的.我们应该考虑到人类的计划,而不是计算机,IMVHO. (5认同)
  • @Aubin为什么?如果没有定义`a`,那么在尝试访问`[index]`时,它会失败. (3认同)
  • 或`if(a中的索引)`从技术上检查是否存在,尽管您的!! == undefined`检查很可能就足够了。 (2认同)

小智 6

你应该可以使用 for(key in data)

var data = [];
data[1] = 'a';
data[3] = 'b';

for(var index in data) {
  console.log(index+":"+data[index]);
}
//Output:
// 1-a
// 3-b
Run Code Online (Sandbox Code Playgroud)

如果索引不连续,将循环遍历数据中的每个关键项.