2016-03-31 2 views
0

У меня есть объект JavaScript, и я хочу найти строку в этом объекте, и если она найдена, возьмите соответствующие значения, разделив их на символ канала.Правильный синтаксис для доступа к объекту JavaScript

<script> 
    var market = "arizona"; 
    var marketNumbers = { 
    "arizona" : "800 555-1234|866 452-8569", 
    "florida" : "800 555-4567|866 452-9999" 
    }; 

    for (market in marketNumbers) { 
    var tmp = marketNumbers[market].split('|'); 
    alert(tmp(0)); 
    }; 
</script> 

Как указано, tmp равно двум числам, разделенным запятыми, а не трубками. Не знаю, откуда взялась запятая.

+5

'предупреждение (TMP [0]);' –

+0

что вы пытаетесь получить доступ является массивом. не настоящий объект. marketNumbers - это истинный объект. – GottZ

+0

В массиве больше нет трубы, вы просто разделили ее. Запятая происходит из метода 'toString' массива, так как' alert' ожидает строку как аргумент. Вы передаете массив, следовательно, он неявно преобразован. – Teemu

ответ

2

вы получаете массив обратно, содержащий данные разделения. вы пытаетесь получить первый элемент, используя tmp(0), этот синтаксис неправильный скобки .. tmp[0].

Ниже код немного изменен, он находит вашу строку и отображает предупреждение с полученными номерами номеров телефонов и отображает первый номер.

<script> 
    var market = "arizona"; 
    var marketNumbers = { 
    "arizona" : "800 555-1234|866 452-8569", 
    "florida" : "800 555-4567|866 452-9999" 
    }; 

    var tmp = marketNumbers[market].split('|'); 
    alert('found '+tmp.length+' items. your first item is '+tmp[0]); 

</script> 
+0

Спасибо, я знал о(), который был слева от формы предыдущих вариантов, я пропустил обновление, когда я разместил вопрос. Мне нравится, что этот код не требует цикла FOR. – user1754738

+0

Цикл for в моем примере был исключительно для иллюстрации всех значений, выходящих из разных рынков. Вы можете получить доступ к ним индивидуально, конечно, используя этот синтаксис, но вы не указали это непосредственно в своем вопросе. Ваш вопрос задавал общий подход. – ManoDestra

0

Доступ массивов правильно ...

<script> 
    var marketNumbers = { 
     "arizona" : "800 555-1234|866 452-8569", 
     "florida" : "800 555-4567|866 452-9999" 
    }; 

    for (var market in marketNumbers) { 
     var tmp = marketNumbers[market].split('|'); 
     for (var i = 0; i < tmp.length; i++) { 
      alert('Phone Number [' + market + ']: ' + tmp[i]); 
     } 
    }; 
</script> 
Смежные вопросы