Typescript - Как проверить, существует ли индекс массива?
Я пытаюсь проверить, существует ли индекс массива в TypeScript следующим образом (Только пример):
var someArray = [];
// Fill the array with data
if ("index" in someArray) {
// Do something
}
Однако я получаю следующую ошибку компиляции:
Оператор in требует, чтобы левый операнд имел тип Any или Строковый примитивный тип и правый операнд типа Any или тип объекта
Кто-нибудь знает, почему? насколько я знаю, то, что я пытаюсь сделать, полностью легально JS.
Спасибо.
Ответы
Ответ 1
Как указано в комментариях, вы смешиваете массивы и объекты. Доступ к массиву можно получить с помощью числовых индексов, в то время как к объекту можно получить доступ к строковым ключам. Пример:
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
}
Ответ 2
jsFiddle Demo
Используйте hasOwnProperty
следующим образом:
var a = [];
if( a.hasOwnProperty("index") ){
/* do something */
}
Ответ 3
Вы также можете использовать метод findindex:
var someArray = [];
if( someArray.findIndex(x => x === "index") >= 0) {
// foud someArray element equals to "index"
}