如何“复制”数组的内容

时间:2019-05-24 13:22:04

标签: javascript arrays

如果我有一个数组:

var array_1 = ['c','b','a'];

array_1转换为

的最佳方法是什么
['c','c','b','b','a','a'];

甚至

['c','c','c','b','b','b','a','a','a'];

7 个答案:

答案 0 :(得分:10)

您可以像这样使用flatMapfill

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