sを使って順番にデータを保存arrayしていますが、ユーザーがリストを反転できる機能を追加したいと考えています。思いつきませんでしたので、どなたかご存知でしたら教えてください。
36 に答える
Javascriptにはreverse()、配列で呼び出すことができるメソッドがあります
var a = [3,5,7,8];
a.reverse(); // 8 7 5 3
それが「使用できないライブラリ」の意味かどうかはわかりませんが、練習と関係があると思います。その場合は、独自のバージョンの.reverse()
function reverseArr(input) {
    var ret = new Array;
    for(var i = input.length-1; i >= 0; i--) {
        ret.push(input[i]);
    }
    return ret;
}
var a = [3,5,7,8]
var b = reverseArr(a);
.reverse()組み込みメソッドは元の配列で動作するため、再割り当てする必要がないことに注意してくださいa。
Array.prototype.reverse()この作業を行うために必要なのはそれだけです。適合表をご覧ください。
var myArray = [20, 40, 80, 100];
var revMyArr = [].concat(myArray).reverse();
console.log(revMyArr);
// [100, 80, 40, 20]
const original = [1, 2, 3, 4];
const reversed = [...original].reverse(); // 4 3 2 1
簡潔で、オリジナルを変更せずに残します。
**
逆メソッドを使用しない最短の逆配列メソッド:
**
 var a = [0, 1, 4, 1, 3, 9, 3, 7, 8544, 4, 2, 1, 2, 3];
 a.map(a.pop,[...a]); 
// returns [3, 2, 1, 2, 4, 8544, 7, 3, 9, 3, 1, 4, 1, 0]
a.pop メソッドは最後の要素を取り除き、スプレッド演算子 () を前に置きます
参照用の MDN リンク:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop
これは一時配列を必要としないバージョンです。
function inplaceReverse(arr) {
  var i = 0;
  while (i < arr.length - 1) {
    arr.splice(i, 0, arr.pop());
    i++;
  }
  return arr;
}
// Useage:
var arr = [1, 2, 3];
console.log(inplaceReverse(arr)); // [3, 2, 1]
    > var arr = [1,2,3,4,5,6];
> arr.reverse();
  [6, 5, 4, 3, 2, 1]
    array.reverse() 
上記は配列を逆にしますが、元の配列を変更します。元の配列を変更したくない場合は、次のようにします。
var arrayOne = [1,2,3,4,5];
var reverse = function(array){
    var arrayOne = array
    var array2 = [];
    for (var i = arrayOne.length-1; i >= 0; i--){
      array2.push(arrayOne[i])
    } 
    return array2
}
reverse(arrayOne)
    sort メソッドを使用して反転
- これははるかに簡潔な方法です。
 
const resultN = document.querySelector('.resultN');
const resultL = document.querySelector('.resultL');
const dataNum = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
const dataLetters = ['a', 'b', 'c', 'd', 'e'];
const revBySort = (array) => array.sort((a, b) => a < b);
resultN.innerHTML = revBySort(dataNum);
resultL.innerHTML = revBySort(dataLetters);
<div class="resultN"></div>
<div class="resultL"></div>
push() を使用しないとどうなりますか !
XOR を使用したソリューション!
var myARray = [1,2,3,4,5,6,7,8];
function rver(x){
    var l = x.length;
    for(var i=0; i<Math.floor(l/2); i++){
        var a = x[i];
        var b = x[l-1-i];
        a = a^b;
        b = b^a;
        a = a^b;
        x[i] = a;
        x[l-1-i] = b;
    }
    return x;
}
console.log(rver(myARray));
    Haskell の実装を js に書き直したところです。
const rev = (list, reversed) => {
    if (list.length == 0) return reversed
    reversed.unshift(list[0])
    return rev(list.slice(1), reversed)
}
const reverse = (list) => rev(list, [])