2016-12-21 63 views
0

我有一個數組,其中每一行都是一個具有2個值S/N和說明的數組。將二維數組與鍵值數組結合

array1 = [["xx9","Big Car"],["xx1","Small Car"],["xx9","Big Car"],["xx9"," Big Car"]]; 

正如你可以看到有重複。所以我編寫了一個代碼,它創建了一個count數組,該數組包含鍵值對並計算每個項目。計數的長度爲1

count = [xx1: 1 
     xx9: 3] 

所以現在我想將兩個數組合併成一個新的,包括數量,在這個例子中,最終輸出將如下圖所示。請注意,我還必須刪除array1中的重複項。順序無關緊要。

final_array = [["1","xx1","Small Car"],["3",xx9","Big Car"]]; 

這是到目前爲止我的JS代碼,但基本上是.forEach循環不會在count陣列工作。任何人都可以幫助我,以便該代碼在鍵值數組上工作。

JS/jQuery的:

//Pull the Cart Data & Orangize 
var savedList = JSON.parse(localStorage.getItem("partList")); 
     console.log(savedList); 
     determineQuantity(savedList); //Count quantity of each item 

//Count the Quantity of each item in saved list & create key-value pairs 
function determineQuantity(savedList){ 
    var newList = []; 
    var count = []; 
    for (var i=0, j = savedList.length; i<j; i++){ 
     count[savedList[i][0]] = (count[savedList[i][0]] || 0) + 1; 
    }; 
     console.log(count); 
    //Combine Quantity Array with SavedList Array 
    count.forEach(function(item,index){ 
        console.log("index = " + index + " item = " + item); 
      savedList.forEach(function(row){ 
       if ($.inArray(item,row == 0)){ //if found in this row at index 0 
        var new_part = [count[index],row[0],row[1]]; 
          console.log("new_part = " + new_part); 
        newList.push(new_part); 
       }; 
     }); 
    }); 
    console.log(newList); 
}; 

回答

1

這個怎麼樣。

var test = function(){ 
    var array = [["xx9","Big Car"],["xx1","Small Car"],["xx9","Big Car"],["xx9"," Big Car"]]; 
    var count = {xx1: 1, xx9: 3}; 
    var map = {}; 
    array.forEach(function(item){map[item[0]] = item[1]}); 
    var newArray = []; 
    for(var key in count){ 
     if(!map[key]) 
      continue; 
     newArray.push([count[key], key, map[key]]); 
    } 
    console.log(newArray); 
} 

首先,你的計數是一個對象,而不是一個數組。那麼我們不需要每個

+0

你能解釋這個'map [item [0]] = item [1]'...爲什麼我們把它等同於item [1]? – Badrush

+1

我們只是創建一個名爲map的對象。它們包含所有鍵/值對。像{「xx9」:「BigCar」,「xx1」:「小汽車」}。 map [「xx9」] =「大車」;地圖[「xx1」] =「小型汽車」;這是我們正在做的每個 – subash

+0

啊我現在看到了。 item [0]是xx9,item [1]是BigCar 我的下一個問題是你能解釋'!map [key]'和'continue'嗎? – Badrush