Я пытаюсь написать функцию JavaScript, чтобы разбить строку на свой разделитель ('/') и захотеть вернуть свою комбинацию путей в массив.
Входные данные:
"Global/Европа/Великобритания/Лондон"
Желаемый результат:
[ "Global", "Global/Europe", "Global/Europe/UK"]
Я попробовал рекурсивную функцию ниже, но по какой-то причине массив содержит только одно значение.
function splitPath(str) {
var output = [];
if (str.lastIndexOf('/') !== -1) {
str = str.split("/").slice(0, -1).join("/");
output.push(str);
splitPath(str);
}
//console.log(output);
return output;
}
Пожалуйста, дайте мне знать, если есть какой-либо прямой способ достичь этого в JavaScript.
Благодарю.
Использование массива # уменьшить
let input = "Global/Europe/UK/London";
let output = input.split("/").slice(0, -1).reduce((acc, item, index) => {
acc.push(index ? acc[index - 1] + '/' + item : item);
return acc;
}, []);
console.log(output);
Вы можете разбить строку и нанести карту части с самого начала, используя только части без последней.
var string = "Global/Europe/UK/London",
grouped = string
.split('/')
.slice(0, -1)
.map(function (_, i, a) {
return a.slice(0, i + 1).join('/');
});
console.log(grouped);
'Global/Europe/UK/London'
.split('/')
.map(
(item, i, items) => {
return items.slice(0, i+1).join('/');
}
)
Вот способ разделить, а затем итеративно добавить части:
function splitPath(str) {
const parts = str.split("/");
let head = parts.shift();
const result = [head];
for (const part of parts) {
head += "/" + part;
result.push(head);
}
return result;
}
console.log(splitPath("Global/Europe/UK/London"))
Как насчет этого?
let output = [];
let input = str.split('/');
input.reduce((acc,v, i, arr) => { output.push(acc + "/"+ v ); return acc + "/"+ v; })