我需要循环一系列数组并提取特定内容。
这是一个数组的例子:
["Title", "Subline 1"]
["Title", "Subline 2"]
["Title", "Subline 3"]
["Title", "Subline 4"]
["Title", "Subline 5"]
每个数组中的标题都是相同的,但子行不同。
我可以将这个问题循环好,然后拉出两个元素或只拉出标题或子线。
但是我想循环数组拉出第一个数组的标题,然后只剩下其余数组的子行,这就是我卡住的地方,我不知道要构造一个循环来做那个。 / p>
输出应如下所示:
Title
Subline 1
Subline 2
Subline 3
Subline 4
Subline 5
提前致谢!
答案 0 :(得分:4)
假设您有一个名为arrays
var result = [arrays[0][0]].concat(arrays.map(function(item){
return item[1];
}));
或者如果你想让它成为“一个循环”
var result = arrays.reduce(function(acc, x, i) {
if(!i) acc.push(x[0])
acc.push(x[1]);
return acc;
}, []);
答案 1 :(得分:1)
如果您有多个标题......
var arr1 = ["Title 1", "Subline 1"];
var arr2 = ["Title 1", "Subline 2"];
var arr3 = ["Title 1", "Subline 3"];
var arr4 = ["Title 2", "Subline 1"];
var arr5 = ["Title 2", "Subline 2"];
var arrays = [arr1, arr2, arr3, arr4, arr5];
var result = arrays.reduce(function(result, item) {
var arr = result[item[0]] = result[item[0]] || [];
arr.push(item[1]);
return result;
}, {});
演示输出到控制台
Object.keys(result).forEach(function(key) {
console.log(key);
result[key].forEach(function(sub) {
console.log(' ', sub);
});
});
输出:
Title 1
Subline 1
Subline 2
Subline 3
Title 2
Subline 1
Subline 2
答案 2 :(得分:0)
创建一个变量来控制标题是否已被拉出。 例如:
var arr1 = ["Title", "Subtitle"];
var arr2 = ["Title", "Subtitle2"];
var arr3 = ["Title", "Subtitle3"];
var titlePulled = false;
var i = 0;
//1st for
for (i = 0; i < arr1.length; i++) {
if (!titlePulled && i == 0) {
titlePulled = true;
console.log(arr1[i]);
}
else {
console.log(arr1[i]);
}
}
//2nd for
for (i = 0; i < arr2.length; i++) {
if (!titlePulled && i == 0) {
titlePulled = true;
console.log(arr2[i]);
}
else {
console.log(arr1[i]);
}
}
等等
答案 3 :(得分:0)
您可以从循环前的第一个元素访问标题。
var array = [
["Title", "Subline 1"],
["Title", "Subline 2"],
["Title", "Subline 3"],
["Title", "Subline 4"],
["Title", "Subline 5"]
];
console.log(array[0][0]); // First title
for(var i = 0; i < array.length; i++) {
console.log(array[i][1]); // Every Subline
}