86

sを使って順番にデータを保存arrayしていますが、ユーザーがリストを反転できる機能を追加したいと考えています。思いつきませんでしたので、どなたかご存知でしたら教えてください。

4

36 に答える 36

155

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

于 2012-04-16T02:27:14.283 に答える
51

Array.prototype.reverse()この作業を行うために必要なのはそれだけです。適合表をご覧ください。

var myArray = [20, 40, 80, 100];
var revMyArr = [].concat(myArray).reverse();
console.log(revMyArr);
// [100, 80, 40, 20]

于 2016-02-19T10:35:31.173 に答える
6
const original = [1, 2, 3, 4];
const reversed = [...original].reverse(); // 4 3 2 1

簡潔で、オリジナルを変更せずに残します。

于 2021-07-21T21:28:42.917 に答える
6

**

逆メソッドを使用しない最短の逆配列メソッド:

**

 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

于 2019-04-24T02:29:19.863 に答える
5

This is what you want:

array.reverse();

DEMO

于 2012-04-16T02:25:14.270 に答える
5

これは一時配列を必要としないバージョンです。

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]
于 2015-07-20T20:55:29.737 に答える
4
> var arr = [1,2,3,4,5,6];
> arr.reverse();
  [6, 5, 4, 3, 2, 1]
于 2012-04-16T02:26:56.187 に答える
4
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)
于 2015-04-22T16:07:05.480 に答える
2

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>

于 2016-05-16T17:13:05.567 に答える
0

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));
于 2015-12-01T20:29:20.083 に答える
-1

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, [])
于 2018-03-06T23:38:37.647 に答える