Hap*_*s31 11 javascript arrays reverse string-length
试图解决Codewars上的这个问题。
我已经能够将数组反向转换为字符串,但是无法将该字符串分配给指定长度的单个元素。我试过了:
function ultimateReverse (array) {
let newArray = array.join("").split("");
let reversedArray = newArray.reverse();
return reversedArray.join("");
}
console.log(ultimateReverse(["I", "like", "big", "butts", "and", "I", "cannot", "lie!"]));
//!eiltonnacIdnasttubgibekilI
Run Code Online (Sandbox Code Playgroud)
但是我们想要的结果是:
["!", "eilt", "onn", "acIdn", "ast", "t", "ubgibe", "kilI"]
因此,根据原始数组,第一个元素的长度应为1,第二个元素的长度应为4,第三个元素的长度应为3,依此类推...
有没有一种方法可以将字符串拆分为元素数组,每个元素都有指定的长度?
我想到了通过执行以下操作来从原始数组中创建项目长度的数组:
function ultimateReverse (array) {
let elementLengths = [];
let newArray = array.join("").split("");
let reversedArray = newArray.reverse().join("");
for (let i = 0; i < array.length; i++) {
let element = array[i];
elementLengths.push(element.length);
}
return reversedArray + " " + elementLengths;
}
console.log(ultimateReverse(["I", "like", "big", "butts", "and", "I", "cannot", "lie!"]));
//!eiltonnacIdnasttubgibekilI 1,4,3,5,3,1,6,4
Run Code Online (Sandbox Code Playgroud)
现在,如果我可以根据原始元素的长度将字符串拆分为数组中的元素...
Cer*_*nce 10
首先构造完整的反向字符串,例如
!eiltonnacIdnasttubgibekilI
Run Code Online (Sandbox Code Playgroud)
然后,从一个初始长度的数组(可以预先完成.map)中,遍历该数组和slice反向字符串中的那个长度,然后推入一个数组:
!eiltonnacIdnasttubgibekilI
Run Code Online (Sandbox Code Playgroud)
您还可以将初始反向数据保留为数组splice,而不是重新分配reversedStr:
function ultimateReverse(array) {
const lengths = array.map(({ length }) => length);
let reversedStr = [...array.join("")].reverse().join('');
const result = [];
lengths.forEach((length) => {
result.push(reversedStr.slice(0, length));
reversedStr = reversedStr.slice(length);
});
return result;
}
console.log(ultimateReverse(["I", "like", "big", "butts", "and", "I", "cannot", "lie!"]));Run Code Online (Sandbox Code Playgroud)