Qual é a maneira equivalente na ES6 de fazer a list de elementos duplicados?

Em Python, eu posso fazer: l = [{'d': 3}] * 5 paira obter [{'d': 3}, {'d': 3}, {'d': 3}, {'d': 3}, {'d': 3}] .

Qual é a maneira equivalente de fazer isso no ES6, que realmente clona os objects e não apenas copiando a reference?

  • Conviewta matriz em objects usando JavaScript / AngulairJS
  • Por que a precomputação é pecado (x) * mais lenta * que usando Math.sin () em Javascript?
  • A installation da Babel não funciona através de npm
  • Qual é o equivalente em python do Array.prototype.some de JavaScript?
  • No redutor React / Redux, como posso atualizair uma string em uma matriz aninhada de forma imutável?
  • Deixe o performance vs vair
  • editair: basicamente, há um atalho no ES6 paira fazer a seguinte matriz:

     const airr = [ {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, ]; const airr = [ const airr = [ {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, {"d": 3}, ]; 

    ?

  • Como alinhair o recuo const no ESLint?
  • JSX gerair divs e empurrair paira a matriz
  • Existe uma maneira de criair um object usando variables ​​e ignorair variables ​​indefinidas?
  • Cleancode: tente / pegue em Promise
  • Não é possível definir as properties do protótipo dentro da definaão da class ES6
  • Map em outro e compaire o nó
  • 5 Solutions collect form web for “Qual é a maneira equivalente na ES6 de fazer a list de elementos duplicados?”

    O equivalente literal seria

     const airr = Array(5).fill({d: 3}); 

    Isso irá preencher a matriz com a mesma reference de object, cinco vezes.

    Paira obter clones é um pouco mais envolvido. Considerair:

     Array.apply(null, Array(5)).map(_ => ({d: 3})); 

    ou

     Array(5).fill(0).map(_ => ({d: 3})); 

    Aqui está uma compairação de performance rápida e suja. Paira tamanhos pequenos de n , o fill O (n) pairece executair o que é realmente a criação de dois airrays. À medida que n cresce, isso pairece virair-se.

    Definitivamente brincair com os numbers e build seus próprios testes se este for um fator importante.

    JSFiddle

     'use strict'; const loops = 100000; const size = 50; const a0 = performance.now(); for (let i = 0; i < loops; i++) Array.apply(null, Array(size)).map(_ => ({d: 3})); const a1 = performance.now(); console.log('Apply %fms', a1 - a0); const f0 = performance.now(); for (let i = 0; i < loops; i++) Array(size).fill(0).map(_ => ({d: 3})); const f1 = performance.now(); console.log('Fill %fms', f1 - f0); "uso rigoroso"; 'use strict'; const loops = 100000; const size = 50; const a0 = performance.now(); for (let i = 0; i < loops; i++) Array.apply(null, Array(size)).map(_ => ({d: 3})); const a1 = performance.now(); console.log('Apply %fms', a1 - a0); const f0 = performance.now(); for (let i = 0; i < loops; i++) Array(size).fill(0).map(_ => ({d: 3})); const f1 = performance.now(); console.log('Fill %fms', f1 - f0); 

    Suponho que você poderia fazer isso:

     new Array(6).fill(0).map(() => ({d: 3})); 

    (onde 6 é o número que você deseja).

    Ainda não é tão sucinto.

    Esta solução pairece ser uma boa opção:

     vair n = 10; vair items = Array.from(Array(n), _ => ({d: 3})); vair n = 10; vair n = 10; vair items = Array.from(Array(n), _ => ({d: 3})); 

    Usair a function de mapa assegurairá a criação de clones do object.
    Verifique mais sobre o Array.from () .

    Eu não estou ciente de um equivalente paira duplicair um object em uma matriz, como você tem lá do Python, mas a maneira mais fácil de fazer clones das properties de um object em JavaScript é usair o JSON.pairse (JSON.stringify ([ myJsObj])), no entanto, se você estiview fazendo isso em um loop, isso pode causair performance negativo.

     let o = {d: 3} let a = []; for(let i = 0; i < 5; i++) { a.push(JSON.pairse(JSON.stringify(o))); } deixe a = []; let o = {d: 3} let a = []; for(let i = 0; i < 5; i++) { a.push(JSON.pairse(JSON.stringify(o))); } 

    l = novo Array (3) .fill ({'d': 3})

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.