Javascript将值合并到以相同单词开头的位置



我有什么:

var test ='1=Car&2=Bike&10=rabbit&10=dog&10=horse&11=ferrari&11=mercedes';

是一个字符串,我将其拆分并转换为数组。我希望每个包含相同起始数字的值都合并为相同的值。

例如,上面的字符串变成了我不想要的数组:

[ "1=Car", "2=Bike", "10=rabbit", "10=dog", "10=horse", "11=ferrari", "11=mercedes" ]

我想要的是:

[ "1=Car", "2=Bike", "10=rabbit,dog,horse", "11=ferrari,mercedes" ]

我的实际代码:

var test ='1=Car&2=Bike&10=rabbit&10=dog&10=horse&11=ferrari&11=mercedes';
var array = test.split('&');
console.log(array);
var check_multiselect = null;
var current_multiselect = null;
for (const [key, value] of Object.entries(array)) {
var obj = value.split('=');
if (obj[0] == check_multiselect) {
console.log(current_multiselect);
current_multiselect = key - 1;
array[current_multiselect] = array[current_multiselect] +', '+obj[1];
} 
check_multiselect = obj[0];
};
console.log(array);

这并没有如预期的那样起作用。里面怎么了?

您可以找到相同的起始编号并更新值。

var test ='1=Car&2=Bike&10=rabbit&10=dog&10=horse&11=ferrari&11=mercedes',
result = test
.split('&')
.reduce((r, string) => {
let [key, value] = string.split('='),
index = r.findIndex(q => q.split('=')[0] === key);
if (index === -1) r.push(string);
else r[index] += ',' + value;
return r;
}, []);
console.log(result);

最新更新