所以我在写一个程序,它接受两个字符串。例如[2,3,4]和[1,4,5],输出为1,1,4,4,4,5,5,5。我没有真正的工作代码。所以,我只是在寻找提示,而不是完整的代码。
xtfmy6hx1#
如果你真的想接收字符串,我会把两个字符串转换成数组,就像你写的那样,例如[2,3,4]和[1,4,5],然后把它们连接起来,再用简单的数据结构算法把它们按顺序排列起来,比如说,遍历数组中的每一项,如果它是最小的数字,则将它移到0位置。然后转到下一个位置,并尝试将数组中除第一个位置之外的最小数字移动到第二个位置,以此类推。
ruyhziif2#
我有一个想法,我觉得应该有一个repeat函数。例如,它可以重复'a' 3次。像a => [a, a, a]
a => [a, a, a]
function repeat(a, times) { if (times === 0) return []; return [a].concat(repeat(a, times - 1)); }
然后我用它来完成这个问题。
function repeatAndConcat(times, arr) { return arr.map(function(item, index) { return repeat(item, times[index]); }).reduce(function(a, b) { return a.concat(b); }); }
重复连接([2,3,4],[1,4,5]),并返回[ 1,1,4,4,4,5,5,5 ]。最后reduceflat一个嵌套数组。
4ktjp1zp3#
您可以使用Array.prototype.entries(),for..of循环,spread元素,Array.prototype.fill()来创建一个数组,其中.length由第一个数组中元素的值设置,并由第二个数组中相同索引处的值填充
Array.prototype.entries()
for..of
Array.prototype.fill()
.length
let [len, arr, res] = [[2,3,4], [1,4,5], []]; for (let [key, prop] of arr.entries()) res.push(...Array(len[key]).fill(prop)); console.log(res);
3条答案
按热度按时间xtfmy6hx1#
如果你真的想接收字符串,我会把两个字符串转换成数组,就像你写的那样,例如[2,3,4]和[1,4,5],然后把它们连接起来,再用简单的数据结构算法把它们按顺序排列起来,比如说,遍历数组中的每一项,如果它是最小的数字,则将它移到0位置。然后转到下一个位置,并尝试将数组中除第一个位置之外的最小数字移动到第二个位置,以此类推。
ruyhziif2#
我有一个想法,我觉得应该有一个repeat函数。例如,它可以重复'a' 3次。像
a => [a, a, a]
然后我用它来完成这个问题。
重复连接([2,3,4],[1,4,5]),并返回[ 1,1,4,4,4,5,5,5 ]。
最后reduceflat一个嵌套数组。
4ktjp1zp3#
您可以使用
Array.prototype.entries()
,for..of
循环,spread元素,Array.prototype.fill()
来创建一个数组,其中.length
由第一个数组中元素的值设置,并由第二个数组中相同索引处的值填充