2015-04-10 3 views
0

Я работаю над формой расчета, который генерирует многомерный массив с двумя значениями [выбор], что-то вроде:Javascript: Сравните два многомерные массивы получить значение

[[10,0.5], [ 18,0.75]]

Второй массив [поиск-таблица] содержит ряд значений:

[ "10", "0,5", "0,1"], [ "12", "0,5", «1,1»], ["14", "0,5", "3,1"], ["16", "0,5", "5.1"], ["18", "0.5", "7.1"], ["20 "," 0,5 "," 9,6 "], [" 22 "," 0,5 "," 11,6 "] ... [" 18 "," 0,75 "," 9,1 "]

Я пытаясь сопоставить индексы [0], [1] в массиве [selection] с одинаковыми значениями индекса в массиве [lookup-table].

["10", "0,5", "0,1"] ... ["18", "0,75", "9,1"]

Как только это будет сделано, я хотел бы для получения значения для значения индекса [x] [2] в таблице [lookup-table]:

["10", "0,5", "0,1"] ... ["18", " 0,75 ", " 9.1 "]

Я нашел здесь очень полезный и похожий вопрос: JavaScript - Compare two multidimensional arrays

И в консоли, похоже, правильно идентифицируют совпадения в индексе массива.

Я использую более или менее аналогичные функции:

function find(haystack, needles) { 
    var lookupValue = []; 
    //Iterate through all elements in first array 

    for(var x = 0; x < haystack.length; x++){ 

     //Iterate through all elements in second array  
     for(var y = 0; y < needles.length; y++){ 

      /*This causes us to compare all elements 
      in first array to each element in second array 
      Since haystack[x] stays fixed while needles[y] iterates through second array. 
      We compare the first two indexes of each array in conditional 
      */ 

      if(haystack[x][0] == needles[y][0] && haystack[x][1] == needles[y][1]){ 
      console.log("match found"); 
      console.log("Array 1 element with index " + x + " matches Array 2 element with index " + y); 

      //Retrieve the price for the high and low lookup values and store in array 
      lookupValue = haystack[x][2]; 

      } 
     } 
    } 
    return lookupValue; 
    } 

    var totalResult = find(lookupTable, flushGrowthArray).toString(); 

Однако при попытке получить стог [х] [2] индексируются значение из матчей в [перекодировки-таблицы], для по какой-то причине я возвращаю только одно значение.

Я думаю, что это, вероятно, очень простая ошибка; Что я делаю не так? Я ценю любые новые идеи.

+0

Вы заменяете 'lookupValue' каждым найденным совпадением, вы не нажимаете совпадение на массив. – Barmar

+0

А, это имеет смысл. И причина, по которой я получаю только последнее полученное значение. – tnog

ответ

1
lookupValue = haystack[x][2]; 

должно быть:

lookupValue.push(haystack[x][2]); 

так добавить матч в массив.

+0

Спасибо, это определенно привело меня в правильном направлении. Я все еще понимаю, как работать с массивами в Javascript. – tnog

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