在给定数量的项目下连续循环数据集

时间:2017-02-26 10:17:06

标签: javascript arrays loops

我有一个特定的数据集,如下所示:

3 # Number of test cases 3 # Test case 1 has 3 names ALFRED SINGH JOHN 6 # Test case 2 has 6 names ALPHA NITRO ROB RICHARD ANON POPE 1 # Test case 3 has 1 name FELIX

所以我已经对这个数据集进行了字符串化,我的问题是根据测试用例的数量循环遍历整个数据集,我还必须考虑每个测试用例中的名称数量。我正在使用javascript,这是我目前的代码。它只能做第一个测试用例:



var example = '3\n3\nALFRED\nSINGH\nJOHN\n6\nALPHA\nNITRO\nROB\nRICHARD\nANON\nPOPE\n1\nFELIX'

run(example)

function run(input) {
    var lines = input.split('\n')
    var testCases = lines[0]
    lines.shift()
    var n = lines[0]
    lines.shift()
    for (var i =0; i < n; i += 1) {
        var names = lines[i]
        console.log(names)
    }
}
&#13;
&#13;
&#13;

我的问题是循环遍历整个数据集,同时尊重测试用例和名称的数量。

答案 多个正确的答案。和JaromandaX一起确定问题第一。

其他问题

所以答案似乎返回了所有名称的列表,而没有考虑测试用例。目的是根据测试用例对名称进行分组。所以像这样的结构(理论上):

{
    "1": ["ALFRED", "SINGH", "JOHN"],
    "2": [...],
    "3": ["FELIX"]
}

3 个答案:

答案 0 :(得分:1)

JSFiffler快速参考: https://jsfiddle.net/rj1405/vttejren/1/

您需要遍历测试用例,并且必须使用 shift() 删除元素。

var example = `3
3
ALFRED
SINGH
JOHN
6
ALPHA
NITRO
ROB
RICHARD
ANON
POPE
1
FELIX`;

run(example)

function run(input) {
    var lines = input.split('\n')
    var testCases = lines.shift();
    for(var x = 0; x < testCases; x++){
      var numberOfNames = lines.shift();
      for (var i = 0; i < numberOfNames; i++) {
          var names = lines.shift();
          console.log(names);
      }
    }
}

答案 1 :(得分:1)

对测试用例使用外部循环 - 内部循环也需要稍微改变

var example = '3\n3\nALFRED\nSINGH\nJOHN\n6\nALPHA\nNITRO\nROB\nRICHARD\nANON\nPOPE\n1\nFELIX';

function run(input) {
    var lines = input.split('\n')
    var testCases = lines.shift();
    var obj = {};
    for (var x = 0; x < testCases; x++) {
        var testCase = obj[x+1] = [];
        var numberOfNames = lines.shift();
        for (var i = 0; i < numberOfNames; i += 1) {
            testCase.push(lines.shift());
        }
    }
    return obj;
}
console.log(run(example));

请注意,使用lines.shift()“读取”行中的值,因为shift返回已移位的行

答案 2 :(得分:0)

您需要遍历所有测试用例。这是代码:

&#13;
&#13;
var example = // 'the dataset above (stringified)'

run(example)

function run(input) {
    var lines = input.split('\n')
    var testCases = lines[0]
    lines.shift()
    for(var x = 0; x < testCases; x++){
    
      var numberOfNames = lines[0]
      lines.shift()
      for (var i =0; i < numberOfNames; i += 1) {
          var names = lines.shift()
  
          console.log(names)
      }
    }
}
&#13;
&#13;
&#13;

编辑: 您必须从数组中删除这些名称:)