如何在 JavaScript 中记录超出范围的数组索引?

Posted

技术标签:

【中文标题】如何在 JavaScript 中记录超出范围的数组索引?【英文标题】:How can I log an ArrayIndex out of bound in JavaScript? 【发布时间】:2011-09-25 03:56:37 【问题描述】:

我有数组var john = ['asas','gggg','ggg'];

如果我在索引 3 处访问 john,即。 john[3],失败了。

我如何显示一条消息或警报,指出该索引没有值?

【问题讨论】:

【参考方案1】:
function checkIndex(arrayVal, index)
    if(arrayVal[index] == undefined)
        alert('index '+index+' is undefined!');
        return false;
    
    return true;


//use it like so:
if(checkIndex(john, 3)) /*index exists and do something with it*/
else /*index DOES NOT EXIST*/

【讨论】:

不要尝试强制转换类型!使用 === 而不是 == !它也会更快(以纳秒为单位,但是嘿!:) “数组索引超出范围”和“数组有'未定义'元素”应该以不同方式处理。见这里:***.com/questions/6728424/…【参考方案2】:
if (typeof yourArray[undefinedIndex] === "undefined") 
  // It's undefined
  console.log("Undefined index: " + undefinedIndex;

【讨论】:

他的问题:我怎样才能显示一条消息或警报,指出传递的索引没有值。 “数组索引超出范围”和“数组有'未定义'元素”应该以不同方式处理。见这里:***.com/questions/6728424/…【参考方案3】:

javascript 有 try catch

try
  
  //your code
  
catch(err)
  
  //handle the error - err i think also has an exact message in it.
alert("Error");
  

【讨论】:

或者检查数组的长度。 if(somearray.length 从错误中捕获索引并吞下它是一个糟糕的解决方案。这种编程会导致错误。最好只检查数组的长度!【参考方案4】:

Javascript 数组从 0 开始。因此您的数组包含内容 0 - 'asas'、1 - 'gggg'、2 - 'ggg'。

【讨论】:

【参考方案5】:
var john = ['asas','gggg','ggg'];
var index=3;
if (john[index] != undefined )
 console.log(john[index]);

【讨论】:

【参考方案6】:

数组的索引从 0 开始,而不是 1。

数组中有3个元素;他们是:

john[0] // asas
john[1] // gggg
john[2] // ggg

【讨论】:

以上是关于如何在 JavaScript 中记录超出范围的数组索引?的主要内容,如果未能解决你的问题,请参考以下文章

索引超出了 MSCORLIB.DLL 中的数组范围

如何在 Swift 中检查我的数组索引是不是超出范围

索引超出了数组拆分函数的范围[重复]

如何解决 uiTableview 滚动应用程序崩溃,它会在 swift 中引发数组索引超出范围异常?

如何重新创建“索引超出数组范围”将项目添加到字典?

当位置超出范围时如何从数组中选择一个值?