次の配列があります。
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]
あなたの場合、-1endパラメータとして実装しているので、コードは
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]になります。これにより、新しい値をプッシュするのと同じ量の配列要素を保持できます。