我在jQuery var str中有一个字符串,如下所示:
var str = 4-68,4-69,4-70,5-86,5-87,5-88,5-89,5-91,6-100,6-101
现在我想组织字符串并得到如下结果:
var result = 4(68,69,70)|5(86,87,88,89,91)|6(100,101)
似乎并不难。但是我无法弄清楚代码中的逻辑。
var dataRecord = '4-68,4-69,4-70,5-86,5-87,5-88,5-89,5-91,6-100,6-101';
var i = 1;
var first_item = [];
var second_item = [];
var final_item = [];
var agree_ref_data = dataRecord.agreement_ref_no;
var main_arr = agree_ref_data.split(',');
for (i = 0; i < main_arr.length; ++i) {
var second_arr = main_arr[i].split('-');
if (jQuery.inArray(second_arr[0], first_item) == -1) {
first_item.push(second_arr[0]);
//second_item.push(second_arr[1]);
}
if (jQuery.inArray(second_arr[0], first_item) !== -1) {
second_item.push(second_arr[1]);
} else {
final_result = second_item;
//second_item=[];
}
}
return final_result;
}
我怎样才能得到理想的结果?
这是纯js中的代码,不需要jQuery。我们首先用逗号分割字符串,然后迭代结果数组,再用'-'分割。然后将值存储为Map(为此使用普通js对象)。其余只是迭代对象的键值对并按摩数据。
var dataRecord = '4-68,4-69,4-70,5-86,5-87,5-88,5-89,5-91,6-100,6-101';
var a = dataRecord.split(',');
var obj = {};
for(var i=0;i<a.length;i++){
var tmp = a[i].split('-');
if(typeof obj[tmp[0]] !== 'object'){
obj[tmp[0]] = [];
}
obj[tmp[0]].push(tmp[1]);
}
var result = '';
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
console.log(key + " -> " + obj[key]);
result = result + key + '(' + obj[key].join() + ')|';
}
}
result = result.substr(0,result.length-1); // removing the last | character
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句