JavaScript将数据存储在二维数组中 [英] JavaScript Storing Data in 2-D Array

查看:79
本文介绍了JavaScript将数据存储在二维数组中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想检查Data数组中的元素,如果它在表中包含月份和数字,则显示为"O".因此,对于"Jan-1",Array1[0][0]应该显示为"O",但是下面的代码不起作用.有人能帮我吗?

var Data = ["Jan-1", "Feb-4", "Apr-5"];
var Month= ["Jan", "Feb", "Mar", "Apr", "May"];
var Number = ["1", "2", "3", "4", "5"];
var Array1 = [[]];

for (var k = 0; k < Data.length; k++) {
    var split = Data[k].split("-");
    for (var z = 0; z < Month.length; z++) {
        for (var s = 0; s < Number.length; s++) {
            if (Month[z] == split[0] && period[s] == split[1]) {
                Array1[z][s] = "O";
            } else {
                Array1[z][s] = "X";
            }             
        }
    }
}

number/month |  Jan  |  Feb  |  Mar  |  Apr  | May
------------------------------------------------------
     1       |   O   |   X   |   X   |   X   |   X  
     2       |   X   |   X   |   X   |   X   |   X  
     3       |   X   |   X   |   X   |   X   |   X  
     4       |   X   |   O   |   X   |   X   |   X  
     5       |   X   |   X   |   X   |   O   |   X  

解决方案

您应循环遍历NumberMonth数组,并每次检查组合Month[j] + "-" + Number[i]是否在Data数组中:

 var Data = ["Jan-1", "Feb-4", "Apr-5"];

var Month = ["Jan", "Feb", "Mar", "Apr", "May"];
var Number = ["1", "2", "3", "4", "5"];

var result = [];


for (var i = 0; i < Number.length; i++) {                   // foreach number
  result[i] = [];                                           // create a row for this current number
  for (var j = 0; j <Month.length; j++) {                   // for each month
    if (Data.indexOf(Month[j] + "-" + Number[i]) !== -1) {  // check if the current combination (currentMonth-currentNumber) is in the Data array
      result[i][j] = "O";
    } else {
      result[i][j] = "X";
    }
  }
}

result.forEach(function(row) {
  console.log(row.join(" | "));
}); 

I would like to check elements in Data array and display as "O" if it contains that Month and Number in a table. So for "Jan-1", Array1[0][0] should be displayed as "O" but code below doesn't work. Can someone help me?

var Data = ["Jan-1", "Feb-4", "Apr-5"];
var Month= ["Jan", "Feb", "Mar", "Apr", "May"];
var Number = ["1", "2", "3", "4", "5"];
var Array1 = [[]];

for (var k = 0; k < Data.length; k++) {
    var split = Data[k].split("-");
    for (var z = 0; z < Month.length; z++) {
        for (var s = 0; s < Number.length; s++) {
            if (Month[z] == split[0] && period[s] == split[1]) {
                Array1[z][s] = "O";
            } else {
                Array1[z][s] = "X";
            }             
        }
    }
}

number/month |  Jan  |  Feb  |  Mar  |  Apr  | May
------------------------------------------------------
     1       |   O   |   X   |   X   |   X   |   X  
     2       |   X   |   X   |   X   |   X   |   X  
     3       |   X   |   X   |   X   |   X   |   X  
     4       |   X   |   O   |   X   |   X   |   X  
     5       |   X   |   X   |   X   |   O   |   X  

解决方案

You should loop over Number and Month array, and each time check if the combination Month[j] + "-" + Number[i] is in the Data array:

var Data = ["Jan-1", "Feb-4", "Apr-5"];

var Month = ["Jan", "Feb", "Mar", "Apr", "May"];
var Number = ["1", "2", "3", "4", "5"];

var result = [];


for (var i = 0; i < Number.length; i++) {                   // foreach number
  result[i] = [];                                           // create a row for this current number
  for (var j = 0; j <Month.length; j++) {                   // for each month
    if (Data.indexOf(Month[j] + "-" + Number[i]) !== -1) {  // check if the current combination (currentMonth-currentNumber) is in the Data array
      result[i][j] = "O";
    } else {
      result[i][j] = "X";
    }
  }
}

result.forEach(function(row) {
  console.log(row.join(" | "));
});

这篇关于JavaScript将数据存储在二维数组中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆