#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);
Комментариев нет:
Отправить комментарий