Typescript - 如何检查数组索引是否存在?

时间:2013-03-31 20:44:02

标签: javascript typescript

我正在尝试通过以下方式检查TypeScript中是否存在数组索引(仅作为示例):

var someArray = [];

// Fill the array with data

if ("index" in someArray) {
   // Do something
}

但是,我收到以下编译错误:

  

in运算符要求左操作数为Any或者   String基本类型,右操作数为Any或an类型   对象类型

有人知道为什么吗?据我所知,我想做的事情完全是JS合法的。

感谢。

4 个答案:

答案 0 :(得分:32)

如评论所示,您正在混合数组和对象。可以通过数字索引访问数组,而可以通过字符串键访问对象。例如:

var someObject = {"someKey":"Some value in object"};

if ("someKey" in someObject) {
    //do stuff with someObject["someKey"]
}

var someArray = ["Some entry in array"];

if (someArray.indexOf("Some entry in array") > -1) {
    //do stuff with array
}

答案 1 :(得分:8)

<强> jsFiddle Demo

像这样使用hasOwnProperty

var a = [];
if( a.hasOwnProperty("index") ){
 /* do something */  
}

答案 2 :(得分:2)

您也可以使用findindex方法:

var someArray = [];

if( someArray.findIndex(x => x === "index") >= 0) {
    // foud someArray element equals to "index"
}

答案 3 :(得分:0)

单行验证。最简单的方法。

if(!!currentData[index]){
  // do something
}

输出

var testArray = ["a","b","c"]

testArray[5]; //output => undefined
testArray[1]; //output => "b"

!!testArray[5]; //output => false
!!testArray[1]; //output => true