繁体   English   中英

在带有两个元素的数组中找到守时元素javascript

[英]find punctual element in array with two elements 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]]

我要做的是重叠两个数组,运行数组data1中数组月份中的值。

因此结果必须是:

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

我怎样才能做到这一点?

您只需要遍历data1 ,并访问data1n-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)

小提琴

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM