netbeans 打印出重复编号

pprl5pva  于 2022-11-10  发布在  其他
关注(0)|答案(3)|浏览(185)

所以我在写一个程序,它接受两个字符串。例如[2,3,4]和[1,4,5],输出为1,1,4,4,4,5,5,5。我没有真正的工作代码。所以,我只是在寻找提示,而不是完整的代码。

xtfmy6hx

xtfmy6hx1#

如果你真的想接收字符串,我会把两个字符串转换成数组,就像你写的那样,例如[2,3,4]和[1,4,5],然后把它们连接起来,再用简单的数据结构算法把它们按顺序排列起来,比如说,遍历数组中的每一项,如果它是最小的数字,则将它移到0位置。然后转到下一个位置,并尝试将数组中除第一个位置之外的最小数字移动到第二个位置,以此类推。

ruyhziif

ruyhziif2#

我有一个想法,我觉得应该有一个repeat函数。例如,它可以重复'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);
   });
 }

重复连接([2,3,4],[1,4,5]),并返回[ 1,1,4,4,4,5,5,5 ]。
最后reduceflat一个嵌套数组。

4ktjp1zp

4ktjp1zp3#

您可以使用Array.prototype.entries()for..of循环,spread元素,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);

相关问题