29.03.2016, 12:55
|
Новичок на форуме
|
|
Регистрация: 23.03.2015
Сообщений: 6
|
|
пройтись по массиве нное кол-во раз
всем привет!
появился вопрос.
например у меня есть массив
var arr = [1,2,3,4,5];
я хочу протись по массиву 2(или N раз) раза,и на втором,на елементе 3 остановиться
чтобы например при 2 раз вывелось в консоль 1,2,3,4,5,1,2,3
при 3 раз вывелось в консоль 1,2,3,4,5,1,2,3,4,5,1,2,3
понятно что так никто не делает.просто интересно стало
такой код не работает,так как заходим бесконечный цикл
var arr = [1,2,3,4,5];
for (var i = 0;i<13;i++){
if(i === 4){
i = 0;
}
console.log(arr[i]);
}
спасибо заранее
|
|
29.03.2016, 13:10
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
sizoider,
function fn(arr, p, n)
{ var c = []
for (var i=1; i<p; i++) {c = c.concat(arr.slice())}
return c.concat(arr.slice(0,++n))
}
alert(fn([1,2,3,4,5], 2, 2));
alert(fn([1,2,3,4,5], 3, 2));
|
|
29.03.2016, 13:30
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
рони,
А такой вариант не оптимальнее? Я имею ввиду по скорости.
let fn = (arr, p, n) => {
arr = JSON.parse( JSON.stringify(arr).repeat(p).replace(/\]\[/g,',') );
arr.splice(arr.lastIndexOf(n) + 1);
return arr;
}
alert(fn([1,2,3,4,5], 2, 3));
alert(fn([1,2,3,4,5], 3, 3));
|
|
29.03.2016, 13:38
|
Новичок на форуме
|
|
Регистрация: 23.03.2015
Сообщений: 6
|
|
спасибо
|
|
29.03.2016, 13:48
|
Новичок на форуме
|
|
Регистрация: 23.03.2015
Сообщений: 6
|
|
в вашем варианте просто режем массивы и склеиваем их
а если мне нужно было бы с каждым элементом какую то операцию проводить которая бы зависила от результата операции над предыдущим ?
|
|
29.03.2016, 14:25
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
Сообщение от sizoider
|
а если мне нужно было бы с каждым элементом какую то операцию проводить
|
<script>
var arr = [1, 2, 3, 4, 5];
function fn(arr, p, n) {
var c = 0,
len = arr.length;
return function() {
return c < len * (p - 1) + n + 1 ? (c++ % len) : true
}
};
var x = fn(arr, 2, 2);
for (var i = 0; i < 15; i++) {
document.write(arr[x()] + ", ")
}
</script>
|
|
29.03.2016, 14:55
|
Новичок на форуме
|
|
Регистрация: 23.03.2015
Сообщений: 6
|
|
круто!!!спасибо
|
|
|
|