Javascript Extjs/js多维数组转换为字符串
我很难从多维数组构造特定的字符串。Javascript Extjs/js多维数组转换为字符串,javascript,extjs,Javascript,Extjs,我很难从多维数组构造特定的字符串。 这是我的数组: [{query:'number:1',操作数:''}, [{query:'number:2',操作数:'&&&'},{query:'number:3',操作数:'&&&'}]], [{query:'number:4',操作数:'| |'},{query:'number:5',操作数:'| |'}] 如何从该数组构造一个字符串,使其如下所示: ((编号:1&&(编号:2&&number:3))| |(编号:4 | |编号:5)) 我已经创建了一个
这是我的数组:
[{query:'number:1',操作数:''},
[{query:'number:2',操作数:'&&&'},{query:'number:3',操作数:'&&&'}]],
[{query:'number:4',操作数:'| |'},{query:'number:5',操作数:'| |'}]
如何从该数组构造一个字符串,使其如下所示:
((编号:1&&(编号:2&&number:3))| |(编号:4 | |编号:5))
我已经创建了一个递归函数,但是结果并不像我期望的那样返回以下是我的代码:
function queryRecursive(queArr){
var que='';
Ext.each(queArr, function(q,idx){
if(Ext.typeOf(q)==='array'){
que+=me.queryRecursive(q);
}else{
if(idx===0){
if(q.operand===''){
que +=q.operand+q.query;
}else{
que +=q.operand+'('+q.query;
}
}else if(idx===queArr.length-1){
que +=q.operand+q.query+')';
}else{
que +=q.operand+q.query;
}
}
});
return que;
}
以下是返回结果:
number:1&&(number:2&&number:3)| | |(number:4 | | number:5)
以下函数生成预期输出。
我添加了一个secound参数addInnerBracket
,它指示在何处添加开头括号
检查一下
下面的函数生成预期的输出。 我添加了一个secound参数
addInnerBracket
,它指示在何处添加开头括号
检查一下
function queryRecursive(queArr, addInnerBracket) {
var que = addInnerBracket ? '' : '(';
Ext.each(queArr, function (q, idx) {
if (Ext.isArray(q)) {
que += queryRecursive(q, true);
}
else {
var innerBracket = addInnerBracket ? '(' : '';
addInnerBracket = false; // only add one inner bracket
que += q.operand + innerBracket + q.query;
}
});
return que + ')';
}