在javascript中连接数组元素序列
假设我们有一个包含“char”和“pos”属性的对象数组,类似于: [{char:a,pos:9},{char:a,pos:6}] 请注意,数组中的最后四个对象具有以下char值:<,b,r,> 我正在寻找一种方法来遍历数组,检测是否有一个包含char值的元素运行,这些元素构成一个BR标记,并将其替换为单个元素。因此,为了帮助澄清这一点,我试图从以下几点出发: [{char:a,pos:9},{char:a,pos:6}] 致:在javascript中连接数组元素序列,javascript,arrays,Javascript,Arrays,假设我们有一个包含“char”和“pos”属性的对象数组,类似于: [{char:a,pos:9},{char:a,pos:6}] 请注意,数组中的最后四个对象具有以下char值: 我正在寻找一种方法来遍历数组,检测是否有一个包含char值的元素运行,这些元素构成一个BR标记,并将其替换为单个元素。因此,为了帮助澄清这一点,我试图从以下几点出发: [{char:a,pos:9},{char:a,pos:6}] 致: [{char:a,pos:9},{char:,pos:3}]好的,这里有一种方法
[{char:a,pos:9},{char:,pos:3}]好的,这里有一种方法。没有正则表达式,我认为它过于复杂(因此我并不为此感到骄傲),但它应该适合您:
var arr = [{char: 'a', pos: 9}, {char: '<', pos: 3}, {char: 'b', pos: 4}, {char: 'r', pos: 5}, {char:'>', pos: 6}],
filled = {
chars: {
'<': false,
'b': false,
'r': false,
'>': false
},
numFilled: 0
},
tempResults = {
chars: []
},
results = [];
for (var i = 0, l = arr.length; i < l; i++) {
var currentChar = arr[i].char,
inFilled = filled.chars[currentChar];
if (inFilled === false) {
inFilled = true;
tempResults.firstPos = tempResults.firstPos || arr[i].pos;
tempResults.firstPos = (arr[i].pos < tempResults.firstPos) ? arr[i].pos : tempResults.firstPos;
tempResults.chars.push(currentChar);
filled.numFilled++;
} else if (inFilled !== true) {
results.push(arr[i]);
}
}
results.push({char: tempResults.chars, pos: tempResults.firstPos});
var arr=[{char:'a',pos:9},{char:'',pos:6}],
填充={
字符:{
'':错
},
numFilled:0
},
临时结果={
字符:[]
},
结果=[];
对于(变量i=0,l=arr.length;i
假设元素按其pos
属性排序
function concatLineBreaks(items) {
var tag_name = null;
for (var i = 0, ii.length; i < ii; ++i) {
var item = items[i];
switch (item) {
case '<':
tag_name = '';
break;
case '>':
if (tag_name.toLowerCase() === 'br') {
i -= 3;
items[i]['char'] = '<br>';
items.splice(i + 1, 3);
tag_name = null;
}
break;
default:
if (tag_name !== null) {
tag_name += item['char'];
}
}
}
}
var items = [ ... ];
concatLineBreaks(items);
函数concatLineBreaks(项){
var tag_name=null;
对于(变量i=0,ii.长度;i';
项目.拼接(i+1,3);
tag_name=null;
}
打破
违约:
如果(标记名称!==null){
tag_name+=项['char'];
}
}
}
}
var项目=[…];
混凝土裂缝(项目);
它们是否必须根据其位置(3、4、5、6)连续?或者可能是这样?此外,您需要将对象中的值表示为字符串(用引号括起来),它们始终根据其位置连续。例如,如果有一组对象的char值分别为,则它们的位置将始终是连续的。感谢您提前提供的任何信息!您是否考虑过重组数据以便于访问?“pos”到底是什么重要吗?