0

以下のコードのように、文字列にキーを持つ配列を設定します。

 var a = new Array();
 a[1] = new Array();
 a[1]['mystring'] = new Array();
 a[1]['mystring'] = 'test';
 if(isNullValues(a[1])) {
    alert("Array Empty.");
 }
 function isNullValues(data) {
    if (data == undefined || data == null || data.length == 0 || data == "") {
        return true;
     } else {
           return false;
     } 
  }

それは私に文字列を警告しArray Emptyます。しかし、これを返す必要はありませんか?

4

4 に答える 4

2

JavaScript には連想配列はありません。あなたがしているのは、プロパティ「mystring」を a[1] の配列に追加することです。したがって、内部カウンター「長さ」はインクリメントされず、a[1].length == 0真であるため、「isNullValues()」は真を返します。

プレーンオブジェクトを使用して、これを「ダーティフィックス」できます。

var a = new Array();
a[1] = {};
a[1]['mystring'] = 'test';
于 2013-01-08T12:15:02.427 に答える
0

言われているように、最初の問題はオブジェクトの代わりに配列を使用することです。ここで、オブジェクトが空(キーがない)かどうかを確認する場合は、そのキーをループする必要があります。

function isObjectEmpty(obj)
    for(var p in obj) {
        if(obj.hasOwnProperty(p)) return false;
    }
    return true;
}
于 2013-01-08T12:22:28.333 に答える
0

これを試してください:

 var a = new Array();
 a[1] = new Object();
 a[1]['mystring'] = 'test';
 if(isNullValues(a[1])) {
    alert("Array Empty.");
 }
 function isNullValues(data) {
    if (data == undefined || data == null || data.length == 0 || data == "") {
        return true;
     } else {
           return false;
     } 
  }

で着替えnew Array()ましたnew Object()

a次のように書くこともできますvar a = [undefined, {mystring: 'test'}];

于 2013-01-08T12:16:36.853 に答える
0

示されているコードは、次の理由により、実際にアラームを表示する必要があります。

a[1]['mystring'] = new Array();

次の意味でmystring含まれる配列に呼び出される新しいプロパティを追加するだけです。a[1]

a[1].length

... 実際の配列に要素が追加されていないため、まだ 0 です。配列内の要素が 0 の場合、isNullValues関数はチェックのために true を返します。

data.length == 0

... アラートが表示されます。

于 2013-01-08T12:16:54.667 に答える