2015-07-20 33 views
0

我有下一種情況:在兩個元素中找到數組中的準時元素javascript

1)。一個月數從1到12,數值爲0的數組:

var months = [[1,0], [2,0], [3,0], [4,0], [5,0], [6,0], [7,0], [8,0], 
       [9,0], [10,0], [11,0], [12,0], [13,0]]; 

2)。另一個小數組,代表着時代用戶已連接到該網站:

data1 = [[1, 40], [2, 50]] 

我想要做的是overlapp兩個陣列,運行在陣月以陣列數據1的值。

所以結果必須是:

data1 = [[1,40], [2,50], [3,0], [4,0], [5,0], [6,0], [7,0], [8,0], 
     [9,0], [10,0], [11,0], [12,0], [13,0]]; 

找不到訪問每個陣列(月)的第一個元素的方式,這是我到目前爲止已經試過:

for (var x = months.length - 1; x >= 0; x--) { 
    for (var j = monthConn.length - 1; j >= 0; j--) { 
     console.log(monthConn[j]); 
     for (var p = 0; p < monthConn[j].length; p++) { 
      console.log(monthConn[j][p]); 
     }; 
     // console.log(months[x].indexOf(monthConn[j])); 
    }; 
    }; 

什麼我得到的的console.log:

["5", "2"] 
5 
2 

我該怎麼辦呢?

+2

你可以使月份的對象與月份作爲鍵和價值作爲值 – depperm

+0

@depperm我需要離開它,因爲我正在修改一個插件,使統計圖:S和它使用數組 – Limon

+0

也許沒有多大關係也許:只是想知道有13個元素,你說12 – vinayakj

回答

1

你只需要遍歷data1,並訪問個月的n-1個位置,其中n是每個條目的第一個元素:

var months = [[1,0], [2,0], [3,0], [4,0], [5,0], [6,0], [7,0], [8,0], [9,0], [10,0], [11,0], [12,0], [13,0]] 

var data1 = [[1, 40], [2, 50]] 

// clone months array 
var overlapped = months.slice() 

// for every data1 value, update corresponding month 
data1.forEach(function(monthData){ 
    overlapped[monthData[0]-1][1] = monthData[1] 
}) 

// et voilá 
console.log(overlapped) 

fiddle

+0

不錯的使用'.slice'克隆數組,並且重疊邏輯太 – vinayakj

+0

我現在知道如何使用slice函數,非常有用 – Limon

0
var months = [[1,0], [2,0], [3,0], [4,0], [5,0], [6,0], [7,0], 
       [8,0], [9,0], [10,0], [11,0], [12,0], [13,0]]; 
var monthConn = [[1,40],[2,50]]; 
var data = []; 
for (var x = 0, l = months.length; x < l; x++) { 
    data[x] = [0,0]; 
    for (var j = monthConn.length - 1; j >= 0; j--) { 
      data[x][0] = months[x][0]; 
      data[x][1] = months[x][1]; 
      if(monthConn[j][0] == data[x][0]){ 
        data[x][1]=monthConn[j][1]; 
        break; 
      } 
    } 
} 
console.dir(months) 
console.dir(data) 
+0

嘿thnx的答案。它僅在數據數組中註冊[1,40],而不是[2,50] – Limon

+0

我沒有降低您的評分。 – Limon

+0

順便說一句你想輸出數據在單獨的數組或相同'months'數組應該在另一個數組中修改 – vinayakj

相關問題