如果我有一个数组:
var array_1 = ['c','b','a'];
将array_1
转换为
['c','c','b','b','a','a'];
甚至
['c','c','c','b','b','b','a','a','a'];
答案 0 :(得分:10)
function duplicate(arr, times) {
return arr.flatMap(n => Array(times).fill(n))
}
console.log(JSON.stringify(duplicate([1,2,3], 2)))
console.log(JSON.stringify(duplicate([1,2,3], 3)))
答案 1 :(得分:2)
使用“新” .flat()
,您可以将数组缩小为一个维度,并可以将多个元素缩小为仅将每个元素映射到这些元素的数组。
var arr1 = ['c', 'b', 'a'];
var arr2 = arr1.map(e => ([e, e, e])).flat();
console.log(arr2);
答案 2 :(得分:0)
这是一个样式问题,通常当您遍历数组并要执行加法运算时,可以使用Array.reduce方法...
const ar1 = ['a', 'b', 'c']
const ar2 = ar1.reduce((ac, cv) => [...ac, cv, cv, cv], [])
...尽管map,forEach等也可以使用。
答案 3 :(得分:0)
遍历原始数组,并为每个字符使用Array(x).fill(c)
创建一个新数组。其中x
是重复项的数量,c
是要复制的字符。然后将每个新数组连接在一起。
答案 4 :(得分:0)
使用简单的 forEach 和 for循环。
您可以通过函数调用来复制数组,该函数调用您的数组以及要复制的次数。
const myArray = ['c', 'b', 'a'];
const resultArr1 = duplicate(myArray, 2);
console.log(resultArr1);
const resultArr2 = duplicate(myArray, 3);
console.log(resultArr2);
function duplicate(arr, times) {
let duplicateArray = [];
arr.forEach(item => {
for(i=0; i < times; i++) {
duplicateArray.push(item);
}
});
return duplicateArray;
}
答案 5 :(得分:0)
public static char[] duplicateAnarray(char arr[], int duplicacyCount) {
char arrnew[] = new char[((arr.length) * duplicacyCount)];
char temp;
int p = 0;
for (int k = 0; k < arr.length; k++) {
for (int i = p; i < arrnew.length; i++) {
for (int j = 0; j < duplicacyCount; j++) {
arrnew[i + j] = arr[k];
}
p = i + duplicacyCount;
break;
}
}
return arrnew;
}
答案 6 :(得分:0)
var array_1 = ['a','b','c']
/* if array has numbers array_1 = [1,2,3] both case are handled and you can change duplicacy number for elements.*/
getResult = (array_1,elemDuplicacyNumber)=>{
return elemDuplicacyNumber <= 0 ? array_1 : array_1.reduce((curr, acc) =>{
let arr1 = Array(elemDuplicacyNumber).fill(curr);
let arr2 = Array(elemDuplicacyNumber).fill(acc);
arr1 = isNaN(curr) ? arr1 : arr1.map(Number);
arr2 = isNaN(acc) ? arr2 : arr2.map(Number);
return (Array.isArray(curr)?curr : arr1 ).concat(arr2)
})
}
console.log( getResult(array_1,5) )