首页 > 解决方案 > 根据提供的长度将重复对象创建到数组中

问题描述

我想根据提供的长度将重复值插入到数组中,如下所示:

var a = [{displayName: 'bar'}, {displayName:'google'}, {displayName:'mod'}];;
var dataTypesLength= 4;

输出应该是这样的:

var a = [{displayName: 'bar'},{displayName: 'bar'},{displayName: 'bar'},{displayName: 'bar'}, {displayName:'google'},{displayName:'google'},{displayName:'google'},{displayName:'google'}, {displayName:'mod'}, {displayName:'mod'}, {displayName:'mod'}, {displayName:'mod'}];

我试过这个:

a = a.flatMap( word => Array.from({ dataTypesLength}).fill( word ));

但我收到打字稿错误说:Argument of type '{ dataTypesLength: any; }' is not assignable to parameter of type 'ArrayLike<{}>'. Object literal may only specify known properties, and 'dataTypesLength' does not exist in type 'ArrayLike<{}>'

标签: javascripttypescripttypescript-typings

解决方案


只需循环对象数组并用于fill获取结果。

var a = [{displayName: 'bar'}, {displayName:'google'}, {displayName:'mod'}];
var dataTypesLength= 4;
var arr=[];
function fillArray(value, len) {
  return Array(len).fill(value);
}
for (var i=0; i<a.length; i++){
  var b = fillArray(a[i],dataTypesLength);
  arr.push(...b);
}
console.log(arr);


推荐阅读