2013-12-03 5 views
0

Я хочу использовать значения, которые я получаю от запроса, но объект ответа - это локальная переменная (массив). Поэтому я создаю этот глобальный массив:Использовать глобальный массив

<script type="text/javascript"> 
    var response = []; 

, как вы видите, прямо под открытием тега сценария, так что глобальный характер. Тогда в функции, где у меня есть ответ я добавил это:

jsonResponse.forEach(function(element){ 
    response[element.size] = element.id; 
}); 

А потом добавили это с целью, чтобы использовать те ценности, которые я получил в моей глобальной переменной из объекта ответа:

getIdOfProductBySize: function() { 
     var selectedIndex = document.getElementById('dropdown_options').value; 
     for (var key in response) { 
      if (key != selectedIndex) { 
       continue; 
      } else { 
       return response[key]; 
      } 
     } 
    } 

Не работает, поэтому я начал идти шаг за шагом (из заказа я добавляю новые вещи), и я заметил, что скрипт ломается после второй вещи, которую я добавляю (где находится forEach).

Возможно, я не объявляю глобальную переменную правильно, или, может быть, я не могу получить к ней доступ таким образом, или, может быть, я не буду присваивать значения правильному пути, я не знаю, поэтому я спрашиваю, кто-то может дать мне подсказку, как использовать все это вместе?

ответ

0
response[element.id] = element.size; 

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

+0

Nope. Это ключ индекса в массиве, я успешно его использую в другом месте. Скажем, jsonResponse выглядит так: 'array ('id' => 123, 'size' => 47)'. Поэтому я хочу присвоить значения глобальному var 'response' таким же образом. – Syspect

+0

Тогда вы хотите использовать их в обратном порядке, см. Мой ответ. Как и идентификатор, как индекс в массиве? –

+0

Я пробовал это раньше и не работал ни ...: \ – Syspect

0

Похоже, вам понадобится двухмерный массив.

Похоже, что ваше «ключевое» значение не определено.

перед:

for (var key in response) { 

попробовать:

var k=response.whatever; 

Если это имеет смысл?

+0

Вы говорите о цикле 'forEach' или о цикле' for' во второй функции? – Syspect

1

Попробуйте это:

var response = {key1: value1}; 

var i = 2; 
jsonResponse.forEach(function(entry) { 
    console.log(entry); 
    response["key"+i] = entry.id; 
    i++; 
}); 


var index; 
for (index = 0; index < response.length; ++index) 
{ 
    console.log(response[index]); 
    if(response["key"+index] !== selectedIndex) 
     continue; 
    else 
     return response["key"+index]; 
} 
+0

Okey, это звучит хорошо. Но мне нужен массив с ключом и значением. Например: array ('id' => 123, 'size' => 47) '. – Syspect

Смежные вопросы