在具有两个元素 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
我该怎么做?
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)
您只需遍历 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。
我有下一个情况:
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
我该怎么做?
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)
您只需遍历 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。