2017-08-19 41 views
6

Mam następujący kod:JavaScript push/shift samego pierwiastka wielokrotnie

var foo = 'foo' 
var bar = 'bar' 
var arr = [1,2,3] 

chcę dodać do foo kilka razy na początku tablicy i bar na koniec tablicy. Ile razy każdy element dodany powinna być dynamiczna i otrzymaną tablicę powinno być coś takiego:

['foo','foo',1,2,3,'bar',bar','bar']

Czy istnieje lepszy sposób niż za pomocą pętli dla każdego elementu można używać lodash jeśli potrzebne?.

+2

Prosta odpowiedź, nie. – Baruch

Odpowiedz

3

Jeśli lepiej oznacza krótszy, tak istnieje sposób:

var foo = 'foo'; 
var bar = 'bar' 
var arr = [1,2,3] 

var result = [ 
    ...Array(2).fill(foo), 
    ...arr, 
    ...Array(3).fill(bar) 
]; 
+0

Składnia rozkładów jest tylko dla es2015 i nowszych. – brennanenanen

1

Spróbuj tej metody forloop. Array#unshift() dodano wartość przy uruchamianiu tablicy. push dodać z końca tablicy

var foo = 'foo' 
 
var bar = 'bar' 
 
var arr = [1,2,3] 
 

 
for(var i=0; i<(Math.random() * 5); i++){ 
 
arr.unshift(foo) 
 
} 
 
for(var i=0; i<(Math.random() * 5); i++){ 
 
arr.push(bar) 
 
} 
 
console.log(arr)

0

Można użyć unshift i push jak

function pushToBeginning(arr, str, count){ 
 
    while(count--){ 
 
     arr.unshift(str); 
 
    } 
 
} 
 

 
function pushToEnd(arr, str, count){ 
 
    while(count--){ 
 
     arr.push(str); 
 
    } 
 
} 
 

 
let arr = [1, 2, 3]; 
 

 
pushToBeginning(arr, 'Foo', 3); 
 
pushToEnd(arr, 'Bar', 2); 
 

 
console.log(arr);

0

czy coś takiego.

var foo = Array.from({length:2}, v => 'foo'); 
 
var bar = Array.from({length:3}, v => 'bar'); 
 
var arr = [1,2,3] 
 

 
arr.push(...bar); 
 
arr.unshift(...foo); 
 
console.log(arr);

+0

(foo + ","). Repeat (3) .split (",") też by działało ... –