0

コード:

var testarray = [];
var test1 = "ashutosh";
var test2 = "ashutosh2";

if (test1 != test2) {
  testarray.push = "ashutosh3";
  testarray.push = "ashutosh4";
  alert(testarray.length);
}

if (testarray.length != 1) {
  alert(testarray.length);
  alert(testarray[testarray.length - 1]);
  alert(testarray[testarray.length - 2]);
}

しかし、すべてのアラートが表示されているときundefined。なぜこれが起こっているのか私にはわかりません。

4

2 に答える 2

1

pushはプロパティではなく関数なので、代わりに

testarray.push="ashutosh3";

これは

testarray.push("ashutosh3");

これが私がそのコードを更新する方法です、FWIWですが、唯一の実質的な変更は、最後にチェックではなくpushを正しく実行し、使用することだと思います(そうでない場合、配列が空の場合は、エントリとを見ており、これは未定義):>= 2!= 1length-1-2

var testarray = [];
var test1 = "ashutosh";
var test2 = "ashutosh2";

if (test1 !== test2) {
  testarray.push("ashutosh3");
  testarray.push("ashutosh4");
  alert(testarray.length);
}

if(testarray.length >= 2) {
  alert(testarray.length);
  alert(testarray[testarray.length-1]);
  alert(testarray[testarray.length-2]);  
}
于 2013-01-13T17:18:18.270 に答える
0

TJ Crowder は既に push に関する問題に回答していますが、JavaScript を初めて使用する方もいらっしゃると思いますので、以前に知りたかった便利なヒントをいくつか紹介します。

For Each ループ

標準の for ループを記述する代わりに、forEach ループを使用できます。

for( i in testArray ){
    console.log( i );
}

オブジェクト

ハッシュテーブルとモジュールが JS に登場するまでは、配列を使用する必要があります。これは、私が知っているオブジェクトを作成する最も簡単な方法です。

var ArrayUtils = {
    "print" : function(array) {
        console.log(array);
    }
}

ArrayUtils はリストなので、ドットまたはブラケット表記を使用して拡張できます

ArrayUtils["size"] = function(array){
   return array.length;
}

ArrayUtils.indexOf = function(array, i){
    return array[i];
}

高階関数

JavaScript の配列には、マップ、リデュース、フィルター関数が組み込まれています。これら 3 つの関数は、洗練されたコードを記述する場合に非常に役立ちます。

  1. マップし、シーケンス内の各要素を関数に渡します

    testArray.map( function(i){ console.log(i); } );
    
  2. Reduce, well は、配列を 1 つの値に減らします。この例では、配列の合計を計算しています

    testArray.reduce( function(x,y) { return x+y; } );
    
  3. ご想像のとおり、フィルターは配列から要素を削除します。JS では、.filter() は新しい配列を返します

    testArray = testArray.filter( function(i) { return ( i > 0 ); } );
    

また、JS にはイテレーターとジェネレーターのサポートがあることも読みました。これらは強力な反復ツールであり、コード ベースで反復を頻繁に使用する場合はチェックする価値があります。私はそうではありません、それは私がtodoとして延期したものです.

于 2013-01-13T20:12:03.007 に答える