我正在尝试通过以下方式检查TypeScript中是否存在数组索引(仅作为示例):
var someArray = [];
// Fill the array with data
if ("index" in someArray) {
// Do something
}
但是,我收到以下编译错误:
in运算符要求左操作数为Any或者 String基本类型,右操作数为Any或an类型 对象类型
有人知道为什么吗?据我所知,我想做的事情完全是JS合法的。
感谢。
答案 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