2017-04-02 52 views
1

我删除了这一点,因为我不相信这是一个很好的问题重复的数字

+0

所以请告诉我们你开始与 – STF

+0

你能解释一下你想要什么?它不清楚输入和输出的描述。 –

+0

_“我的不好。Outprints:1,1,4,4,4,5,5,5,5”_您能编辑原始问题以包含预期结果。 – guest271314

回答

0

,如果你真的想在字符串,我将采取两个字符串和他们每个人的转换成数组怎么写,例如:[ 2,3,4]和[1,4,5]然后concatonate他们。然后使用简单的数据结构算法按顺序排列它们。因此,例如,遍历数组中的每个项目,并将其移动到0位置(如果它是最小的数字)。然后转到下一个位置,并尝试移动阵列中除第一个位置以外的最小编号到第二个位置等。

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]。

最后减少平整一个嵌套数组。

+0

我喜欢。它可以工作!谢谢! – WebNeoRaven

+0

@WebNeoRaven很高兴我能帮助你 – g1eny0ung

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);