2017-08-19 16 views
6

Tôi có đoạn mã sau:Javascript Push/phím Shift cùng yếu tố nhiều lần

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

tôi muốn thêm vào foo nhiều lần vào đầu của mảng và bar vào cuối mảng. Số lần mỗi yếu tố bổ sung nên năng động và các mảng kết quả nên được một cái gì đó như:

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

Có một phương pháp tốt hơn so với sử dụng một vòng lặp cho mỗi phần tử Tôi có thể sử dụng lodash nếu cần thiết?.

+2

câu trả lời đơn giản, không có. – Baruch

Trả lời

3

Nếu tốt hơn nghĩa ngắn, vâng có một cách:

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

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

Cú pháp lây lan chỉ áp dụng cho các năm từ năm 2015 trở đi. – brennanenanen

1

Hãy thử phương pháp forloop này. Array#unshift() đã thêm giá trị khi bắt đầu mảng. push thêm với cuối mảng

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

Bạn có thể sử dụng unshiftpush như

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

Hoặc một cái gì đó như thế này.

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 (",") cũng sẽ hoạt động ... –

Các vấn đề liên quan