私は学校の割り当てがあり、インデックスの配列から何かを削除する際に問題があります。 これは私が現在持っているものです。Javascript delete loop
配列の長さを返す関数:オブジェクトを作成してからオブジェクトを削除するアレイ
function UstvariObjekt(ime,priimek, stranka) {
if (ime.length == 0 || priimek.length == 0 || stranka.length == 0) {
throw "Parametri niso popolni!";
}
else {
var novaoseba=new oseba(ime, priimek, stranka);
polje.push(novaoseba);
console.log(novaoseba.ime, novaoseba.priimek, novaoseba.stranka);
}
}
関数にそれを押し込む
function DolzinaPolja(polje){
return polje.length-1;
}
新しいコンストラクタ
function oseba(ime, priimek, stranka) {
this.ime=ime;
this.priimek=priimek;
this.stranka=stranka;
}
機能配列
function OdstraniIzPolja(x) {
if(x > polje.length - 1 || x == polje.length) {
throw"Polje ni tako veliko!";
}
for(var i=0; i<=polje.length-1;i++) {
if(x==polje[i]) {
polje.splice(x,1);
return true;
}
return false;
}
}
アレイからオブジェクトを削除する際に問題が発生しています。 私のテストです。
var polje = [];
var x=0;
UstvariObjekt("Rene","Vucko","Stranka");
UstvariObjekt("R","V","S");
UstvariObjekt("X","Y","Z");
OdstraniIzPolja(x);
console.log(polje[0]);
console.log(polje[1]);
console.log(polje[2]);
console.log(DolzinaPolja(polje));
だから私の配列は2の長さでなければなりません.0,1,2から始めます。私が理解できないのは、配列からオブジェクトを削除する関数がオブジェクトを削除しないのはなぜですか?私はちょっと遊んだことがありますが、間違ったオブジェクトを削除することがよくあります。
xの長さが配列の長さよりも小さい場合は、xのif節も同じですか?
--- UPDATE ---- 私は polje.slice(2,1)をプログラムの中に関数なしで書くと、正しいものを削除します。だから明らかに何かがループに間違っています。 これは私の更新されたコードです。
function DolzinaPolja(polje){
return polje.length-=1;
}
function OdstraniIzPolja(x)
{
if(x>polje.length-1 || x==polje.length)
{
throw"Polje ni tako veliko!";
}
for(var i=polje.length-1;i>=0;i--)
{
if(x==polje[i]){
polje.splice(i,1);
return true;
}
return false;
}
}
--EDIT-- ここhttps://jsfiddle.net/2y07wtkL/
DolzinaPoljaが長さを返していない場合は、長さから1を引いた値が返されます。 –
あなたの 'OdstraniIzPolja'関数で' x'はインデックスなので、適切な範囲に入っているかどうかチェックしています...ループは必要ありません。 –
コンソールログ出力とは何ですか? – GracefulCode