根据提供的长度将重复值推入数组

时间:2019-06-11 13:28:22

标签: javascript

我想根据提供的长度将重复值插入数组:

var a = ['bar', 'google', 'mod'];
var b = [];

var dataLength = 4;

输出应类似于:var a = ['bar', 'bar','bar','bar', 'google', 'google', 'google', 'google', 'mod', 'mod','mod', 'mod'];

我尝试过:

var dataLength = 4;
var a = ['bar', 'google', 'mod'];
var b = new Array(dataLength);
var c = [];

for (let i = 0; i < a.length; i++) {
    c.push((b.fill(a[i]).toString()))
}

它可以工作,但不确定这是否是一个好方法。

6 个答案:

答案 0 :(得分:3)

尝试一下:

const a = ["barclays", "google", "vod"];

const result = (num) => a.reduce((acc, ele) => acc.concat(Array(num).fill(ele)), []);

console.log(result(10))

答案 1 :(得分:2)

var a = ['barclays', 'google', 'vod'];
var b = [];

var dataLength = 4;
// Loop every element of a
for (let i = 0; i < a.length; i++) {
  // Loop 4 times and push current element
  for (let j = 0; j < dataLength; j++) {
    b.push(a[i])
  }
}

console.log(b)

答案 2 :(得分:1)

添加嵌套的for循环,遍历您的数据长度并将元素推入数组。

{1: 2, 2: 3, 3: 4, 4: 5}

答案 3 :(得分:1)

我们最新的Array方法中的两个,flatMap()和fill()非常适合:

.flatMap()将进行映射并将返回的数组合并为一个数组。 .from()可以创建一个特定长度的新数组。 .fill()用特定值填充数组。

因此,所有这3个组合在一起,我们得到了这个小内衬:

var a = ['barclays', 'google', 'vod'];
var length = 4;
var b = a.flatMap( word => Array.from({ length }).fill( word ));

console.log( b );

答案 4 :(得分:1)

一种相当简单的技术就是将flatMapArray.prototype.fill一起使用:

const repeatN = (n, arr) => arr .flatMap (a => Array (n) .fill (a) )

console .log (
  repeatN( 4,  ['barclays', 'google', 'vod'] )
)

如果您的环境不是support flatMap,则填充起来并不难,或者您可以使用它来代替:

const repeatN = (n, arr) => 
  arr.map(a => Array (n) .fill (a)) .reduce ( (a, b) => a .concat (b) )

答案 5 :(得分:0)

path.resolve(...)

类似这样的东西,除了在我的例子中没有排序。