我有一个特定的数据集,如下所示:
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;
我的问题是循环遍历整个数据集,同时尊重测试用例和名称的数量。
答案 多个正确的答案。和JaromandaX一起确定问题第一。
其他问题
所以答案似乎返回了所有名称的列表,而没有考虑测试用例。目的是根据测试用例对名称进行分组。所以像这样的结构(理论上):
{
"1": ["ALFRED", "SINGH", "JOHN"],
"2": [...],
"3": ["FELIX"]
}
答案 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)
您需要遍历所有测试用例。这是代码:
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;
编辑: 您必须从数组中删除这些名称:)