我删除了这个,因为我不相信这是一个好问题
答案 0 :(得分:0)
如果你真的想要接受字符串,我会取两个字符串并将它们中的每一个转换成数组,如你所写的那样[2,3,4]和[1,4,5]然后将它们连接起来。然后使用简单的数据结构算法按顺序排列它们。因此,例如,遍历数组中的每个项目,如果它是最小的数字,则将其移动到0位置。然后转到下一个位置,并尝试将除第一个位置之外的数组中的最小数字移动到第二个位置,等等。
答案 1 :(得分:0)
我有一个想法,我认为应该有一个重复功能。例如,它可以重复“a”3次。就像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);
});
}
repeatConcat([2,3,4],[1,4,5]),返回[1,1,4,4,4,5,5,5,5]。
最后一个 reduce 使嵌套数组变平。
答案 2 :(得分:0)
您可以使用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);