Как я могу упростить это массиворганизации/группы массив на основе состояния - Javascript
[ china, country1(city1), country1(city2), country1(city3)), korea, australia]
к
[ china, country1(city1, city2, city3), korea, australia]
Как я могу упростить это массиворганизации/группы массив на основе состояния - Javascript
[ china, country1(city1), country1(city2), country1(city3)), korea, australia]
к
[ china, country1(city1, city2, city3), korea, australia]
перебирать элементы массива
join(',')
, чтобы получить разделенную запятыми строку ваших городов.var cityRegex = /\((.*)\)/;
var countryRegex = /([^()]*)\(?.*\)?/;
var countryCityArray = ['china', 'country1(city1)', 'country1(city2)', 'country1(city3)', 'korea', 'australia'];
var countryCityMap = {};
countryCityArray.forEach(function(countryCity) {
var matches = countryRegex.exec(countryCity);
var country = matches[1]
if (!countryCityMap[country]) {
countryCityMap[country] = [];
}
matches = cityRegex.exec(countryCity);
if (matches && matches.length) {
var city = matches[1];
countryCityMap[country].push(city);
}
});
var targetArray = Object.keys(countryCityMap).map(function(country) {
var countryCity = country;
if (countryCityMap[country].length) {
countryCity = countryCity + '(' + countryCityMap[country].join(',') + ')';
}
return countryCity;
});
console.log(targetArray);
Изменить 'country1' принять несколько аргументов? Конечно, это также изменит количество элементов в массиве. –
Количество элементов в стране1 может отличаться. Как я могу изменить страну1 для принятия аргументов? Я думал, что это всего лишь элемент массива. – Mustang
'country1' представляется функцией. Разве это не так? Ваш вопрос не совсем понятен. Пожалуйста, внимательно прочитайте [ask] и [edit] свой вопрос. –