javascript,循环数组,只拉一次第一项

时间:2016-02-04 09:12:39

标签: javascript arrays loops for-loop

我需要循环一系列数组并提取特定内容。

这是一个数组的例子:

["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

提前致谢!

4 个答案:

答案 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
}