次の配列があります。
var arr = [1,0,2];
最後の要素、つまり2を削除したいと思います。
使用しましたarr.slice(-1);
が、値は削除されません。
arr.slice(0,-1)
私にとって最良のソリューションでした
splice()
、2番目のケース:pop()
。
次の配列があります。
var arr = [1,0,2];
最後の要素、つまり2を削除したいと思います。
使用しましたarr.slice(-1);
が、値は削除されません。
arr.slice(0,-1)
私にとって最良のソリューションでした
splice()
、2番目のケース:pop()
。
回答:
arr.splice(-1,1)
[1].splice(-1, 1)
=>[1]
[0,1,2] -> [2]
、を残し[0,1]
ます。その場合[arr.pop()]
は、トリックを行います。
array.pop()
修正変更されますarray
、しばらくはslice(0, -1)
しません。ポップはもちろん高速ですが、必ずしもすべてのニーズに適しているとは限りません。
JavaScript規約によるArray.prototype.pop()。
let fruit = ['apple', 'orange', 'banana', 'tomato'];
let popped = fruit.pop();
console.log(popped); // "tomato"
console.log(fruit); // ["apple", "orange", "banana"]
次の.slice()
ような方法でこれを行うことができます:
arr.slice(0, -1); // returns [1,0]
ここにデモがあります:
var arr = [1, 0, 2];
var newArr = arr.slice(0, -1); // returns [1,0]
console.log(newArr);
$('#div1').text('[' + arr + ']');
$('#div2').text('[' + newArr + ']');
<script src="http://code.jquery.com/jquery.min.js"></script>
<b>Original Array : </b>
<div id="div1"></div>
<br/>
<b>After slice(0, -1): </b>
<div id="div2"></div>
代わりに:
arr.slice(-1); // returns [2]
ここにデモがあります:
var arr = [1, 0, 2];
var newArr = arr.slice(-1); // returns [2]
console.log(newArr);
$('#div1').text('[' + arr + ']');
$('#div2').text('[' + newArr + ']');
<script src="http://code.jquery.com/jquery.min.js"></script>
<b>Original Array : </b>
<div id="div1"></div>
<br/>
<b>After slice(-1): </b>
<div id="div2"></div>
これで、Array.prototype.slice()
または簡単なslice()
メソッドの基本的な構文は次のとおりです。
arr.slice([begin[, end]])
ここに、
begin
パラメータは、アレイ開始からの抽出に0から始まるインデックスです。したがって、次のような場合、上記の例に基づいて言うことができます
arr.slice(0) // returns [1,0,2]
シーケンスの開始から位置0のすべての配列要素を返します[1,0,2]
。同様に、
arr.slice(1) // returns [0,2]
[0,2]
ここでは0が1の位置にあり、その後はすべてになるため、0が返されます。さて、あなたのケースでは、負のインデックスを渡しました。つまり、-1
シーケンスの最後からのオフセットを示すbeginパラメータとして。したがって、slice(-1)
あなたのケースでは、シーケンスの最後の1つの配列要素を抽出します2
(上記のデモですでに見たように)。
ここend
で、slice()
メソッド構文のパラメーターについて説明します。これも、配列からの抽出が終了するゼロベースのインデックスです。したがって、次のような配列があるとします。
var arr = [1, 0, 2, 5, 3, 9];
2,5,3
配列の要素だけを取得したいのです。今、2
シーケンスの最初からの位置はで2
あり、最後の要素3
では4
です。その位置の前の要素を取得する必要があるため、ここで抽出を終了する必要があります。したがって、slice()
ここでは単純にメソッドを実装します
arr.slice(2, 5) // returns [2,5,3]
あなたの場合、-1
endパラメータとして実装しているので、コードは
arr.slice(0, -1) // returns [1,0]
負のインデックスとしてend
、シーケンスの最後からのオフセットを示します。したがって、slice(0,-1)
シーケンスの最初の要素から最後から2番目の要素を抽出します。したがって、目的の出力が得られます。私たちもできる
arr.slice(0, 2) // returns [1,0]
同じ出力が得られます。しかし、私は-1
ここのように長い配列でも実装しやすいので使用しました
[0,2,3,1,2,9,3,6,3,9,1,0,2,9,0,1,1,2,3,4,7,9,1]
最後の要素を削除したいだけなら、ここに座って最後の9の位置を計算したくはありませんarr.slice(0, 22)
。その後、ここで単純に負のインデックスロジックを実装して実行できます。
arr.slice(0, -1) // same result as arr.slice(0, 22)
それが役に立てば幸い!
arr
を除外する新しい配列を返すことに注意してください。Mozillaのドキュメントにあるように、「slice()メソッドは、配列の一部の浅いコピーを新しい配列オブジェクトに返します。」
arr.slice(0, -1)
が最良の答えです。
例で学ぶ:
let array_1 = [1,2,3,4];
let array_2 = [1,2,3,4];
let array_3 = [1,2,3,4];
array_1.splice(-1,1) // output --> [4] array_1 = [1,2,3]
array_2.slice(0,-1); // output --> [1,2,3] array_2 = [1,2,3,4]
array_3.pop(); // output --> 4 array_3 = [1,2,3]
私は.pop()
最も「正しい」ソリューションであると考えますが、最後の要素がない配列を使用する必要があるため、うまくいかない場合があります...
そのような場合、以下を使用する必要があるかもしれません、それは戻ります [1,2,3]
var arr = [1,2,3,4];
console.log(arr.splice(0,arr.length-1));
しばらくは.pop()
戻ってきます4
。
var arr = [1,2,3,4];
console.log(arr.pop());
これは望ましくないかもしれません...
これにより時間を節約できることを願っています。
あなたはそれを使用して2つの方法でそれを行うことができますsplice()
:
arr.splice(-1,1)
arr.splice(arr.length-1,1)
splice(position_to_start_deleting, how_many_data_to_delete)
2つのパラメーターを取ります。
position_to_start_deleting
:削除を開始するゼロから始まるインデックス。
how_many_data_to_delete
:指定されたインデックスから、削除する必要がある連続したデータの数。
pop()
as を使用して最後の要素をpop()
削除し、配列から最後の要素を削除することもできます。
使用するarr.pop()
このメソッドは、配列の最後の要素を削除して保存するのに役立ちます。
var sampleArray = [1,2,3,4];// Declaring the array
var lastElement = sampleArray.pop();//this command will remove the last element of `sampleArray` and stores in a variable called `lastElement` so that you can use it if required.
結果は次のとおりです。
console.log(sampleArray); //This will give you [1,2,3]
console.log(lastElement); //this will give you 4
slice
両方が新しい配列を返す一方.pop()
で.splice()
、既存の配列を変更することは注目に値します配列ます。
チェーンされたコマンドスタイルでデータのコレクションを処理したい場合は、slice
このようなものを使い続けたいと思うでしょう。
例えば:
myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var newArrayOfThings = myArray
.filter(x => x > 5) // only bigly things
.slice(-1) // get rid of the last item
.map(x => `The number is: ${x}`);// map to a set of strings
"pop"を使用して同じ種類のことを行うにはmap
、filter
や、などとは異なり、新しい配列を取得できないため、いじりの変更と変数の管理が必要になる場合があります。
これpush
は、配列の最後に項目を追加すると同じようなものです。それはあなたがconcat
流れを続けることを可能にするので、あなたはより良いものになるかもしれません。
myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var newArrayOfThings = myArray
.filter(x => x > 5) // only bigly things
.slice(-1) // get rid of the "10"
.concat([100]) // note with concat, you must pass an array
.map(x => `The number is: ${x}`) // map to a set of strings
2019 ECMA5ソリューション:
const new_arr = arr.reduce((d, i, idx, l) => idx < l.length - 1 ? [...d, i] : d, [])
非破壊的で汎用的なワンライナーで、配列の最後にコピーと貼り付けが必要なだけです。
I would like to remove the last element
。これには、元の配列に対する破壊的/変更操作が必要です。
あなたが持っていると言う var arr = [1,0,2]
arr.splice(-1,1)
あなたに戻るarray [1,0];
間 あなたarr.slice(-1,1)
に戻りますarray [2];
これは最後のアイテムを削除する良い方法です:
if (arr != null && arr != undefined && arr.length > 0) {
arr.splice(arr.length - 1, 1);
}
次としてスプライスの詳細:
splice(startIndex、スプライスの数)
var stack = [1,2,3,4,5,6];
stack.reverse().shift();
stack.push(0);
出力はArray [0,1,2,3,4,5]になります。これにより、新しい値をプッシュするのと同じ量の配列要素を保持できます。