2015-08-14 2 views
1

Я вызываю метод .string для строки и установки, равную другой переменной. Он возвращает массив с [match value, index, and input]. Когда я пытаюсь обратиться к второму элементу массива, он возвращается как неопределенный. Может кто-нибудь сказать мне, почему это так? Heres мой код:.match Значение массива не определено

var str = "hello world" 
var matchArray = str.match("ell"); 

=>matchArray = ["ell",index:1,input:"hello world"] 

var index = matchArray[1]; 
console.log(index); 

=>undefined 

Заранее спасибо.

+0

'matchArra'y возвращает только' [ "флигель"] 'без индекса – mohamedrias

ответ

1
var str = "hello world" 
var matchArray = str.match("ell"); 

matchArray является Array, но в JavaScript, как мы знаем, что мы можем установить свойство в массиве, а также это объект.

В приведенном выше случае matchArray имеет только математику в массиве. но в объекте находятся другие свойства, такие как index и input.

Если вы делаете console.dir(matchArray), вы должны получить недвижимость.

Таким образом, чтобы получить доступ эти свойства используются обозначения объекта как matchArray.index или matchArray.input

+1

Потрясающие. Большое спасибо! – chungsquared

+0

Прошу прощения. Я забыл об этом. –

0

JavaScript интересный язык. Хотя matchArray объект действительно представляет собой массив, в JS вы можете добавить новых членов в любой объект . Таким образом, matchArray представляет собой массив длиной 1, но также имеет индекс и введенные им члены. Попробуйте это:

... 
console.log(matchArray.index); 
console.log(matchArray.input); 

Мы могли бы определить подобный объект с нуля, как это:

var hybridObj = [ "ell" ]; // It's an array 
hybridObj.index = 1;  // With props 
hybridObj.input = "hello world";