我有以下数组:
[ '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' ]
。
如何做到这一点?
答案 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]