
iOS12 Safariのreverseバグとは
iOS12 SafariのJavaScriptのreverseで配列が反転しないバグが存在する。
通常は[1, 2, 3]を[1, 2, 3].reverse()にすれば配列は[3, 2, 1]と反転するがiOS12 Safariは[1, 2, 3]のままになってしまう。
var a = [1, 2, 3]; alert( a + '\n' + a.reverse() );
iOS12 Safariのreverseバグの対処法
iOS12 Safariのreverseバグは影響が大きいのですぐに修正されるだろう。
修正されてしばらく経過するまではreverse関数を作成して代替で使用すると良い。
// この関数は非破壊的(a.slice().reverse()と同等)なので // 本来の破壊的(a.reverse())使用なら変数に上書きする、 function reverse(arr) { var temp = []; arr.forEach(function(a, i) { temp.push(arr[arr.length - i - 1]); }); return temp; } var a = [1, 2, 3]; alert( a + '\n' + reverse(a) );