Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

сдвиг массива на к позиций

#javascript


пытаюсь  сдвинуть элементы  массива вправо на к позиций,элементы сдвигаются вродебы
правильно но среди них один undefined следовательно я затираю один элемент,как это
исправить?

var a=[1,2,3,45,8,9,7,10]
var k=3;//шаг
var n=a.length;var temp=[];
for(i=0;i<=k;i++){temp[i]=a[n-k+i];}  
for(i=n-1;i>=k;i--){a[i]=a[i-k];}  
for(i=0;i<=k;i++){a[i]=temp[i];}  
console.log(a)
//должно быть [9, 7, 10, 1, 2, 3, 45, 8]

    


Ответы

Ответ 1



Циклический сдвиг массива лучше делать так: var a=[1,2,3,45,8,9,7,10] var k=3;//шаг for(i=0;i

Ответ 2



Вы можете сделать это в одну строчку

Ответ 3



всё нашел свою ошибку,если есть ответы более элегантные то прошу написать их var a=[1,2,3,45,8,9,7,10] var k=3; var n=a.length;var temp=[]; for(i=0;i=k;i--){a[i]=a[i-k];} for(i=0;i

Ответ 4



Еще один вариант с функцией map var a = [1, 2, 3, 45, 8, 9, 7, 10] var k = 3; //шаг document.body.innerHTML = 'a = '+ JSON.stringify(a) + '
k = '+k+'
'; a = a.map(function(el, index, arr) { return index < k ? arr[arr.length + index - k] : arr[index - k] }); document.body.innerHTML += 'new a = '+ JSON.stringify(a);

Комментариев нет:

Отправить комментарий