在数组数组中选择下一个数组

时间:2015-03-02 13:43:07

标签: javascript arrays

我有以下数组:

[ 'markdown',
  [ 'para', 'This is a ', [ 'em', 'paragraph' ] ],
  [ 'hr' ],
  [ 'para', 'another paragragh' ] ]

我做了类似这样的事情来匹配'hr'

for (i = 1; i < jsonml.length; i++) {
  if (jsonml[i][0] === 'hr') {
    var hr = jsonml[i]
    console.log(hr)
    // outputs: [ 'hr' ]
  }
}

我想要做的是获取[ 'para' ]之后的[ 'hr' ],在这种情况下为[ 'para', 'another paragraph' ]

如何做到这一点?

4 个答案:

答案 0 :(得分:2)

你可以这样做:

var found = false;
for (i = 1; i < jsonml.length; i++) {
  if (jsonml[i][0] === 'hr') {
    var hr = jsonml[i]
    console.log(hr);
    found = true;
    // outputs: [ 'hr' ]
  } else if (jsonml[i][0] === 'para' && found) {
     var para = jsonml[i];
     console.log(para);
     // process or escape the loop
  }
}

答案 1 :(得分:1)

Demo假设你想要hr之后的内容

var arr = ['markdown', ['para', 'This is a ', ['em', 'paragraph']],
    ['hr'],
    ['para', 'another paragragh']
];

var len = arr.length;
for(var i = 0; i < len; i++){
    if(arr[i].length > 0 && arr[i][0] === 'hr' && i+1 < len){
        console.log(arr[i+1]);
        //or
        for(var j = 0; j < arr[i+1].length; j++){
            console.log(arr[i+1][j]);
        }
    }
}

答案 2 :(得分:1)

如果你确定数组的结构是相同的,你可以这样做:

for (i = 1; i < jsonml.length; i++) {
  if (jsonml[i][0] === 'hr') {
    var hr = jsonml[i+1]
    console.log(hr)    
  }
}

答案 3 :(得分:1)

从你的评论中,它只是字符串数组。所以你可以加入它,这会将数组变成逗号分隔的字符串。

var fArr = arr.join().split(","), hrIdx = fArr.indexOf('hr');
var items = fArr.slice(hrIdx).filter(function(item){
   return item == "para";
}); // returns an Array, use index for ex [0]