Javascript Push / Shift один и тот же элемент несколько раз

у меня есть следующий код:

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

Я хочу добавить к foo несколько раз в начале массива и bar в конце массива. Количество добавленных элементов должно быть динамическим, а результирующий массив должен быть примерно таким:

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

есть ли лучший метод, чем использование цикла для каждого элемента?Я мог бы использовать lodash, если это необходимо.

4 ответов


Если лучше означает короче, Да есть способ:

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

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

попробуй такое forloop метод. Array#unshift() добавлено значение при запуске массива.push добавить с конца массива

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)

можно использовать unshift по и пуш как

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

или что-то вроде этого.

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