5

Javascript では、キーが自動番号付けされた (0 から始まる) 割り当てられた配列になるように配列を設定できることを知っています。

var d_names = new Array("Sunday", "Monday", "Tuesday", 
              "Wednesday", "Thursday", "Friday", "Saturday");

// Key for Sunday is '0' 

キーを割り当てたい場合は、次のようにします。

    var d_names={};
    d_names[5]="Sunday";
    d_names[6]="Monday";
    d_names[7]="Tuesday";
    d_names[8]="Wednesday";
    d_names[9]="Thursday";
    d_names[10]="Friday";
    d_names[11]="Saturday";

    // Key for Sunday is '5'

しかし、PHP のようにキーを割り当てる簡単な方法はありますか?

var d_names = new Array(5=>"Sunday", 6=>"Monday", 7=>"Tuesday", 8=>"Wednesday", 
            9=>"Thursday", 10=>"Friday", 11=>"Saturday"); 

// Doesn't work
4

6 に答える 6

10

あなたが欲しいのはオブジェクトです:

var d_names = {
    5: "Sunday",
    6: "Monday"
    //...
};

"Sunday"次に、次のように取得できます。

var sunday = d_names[5];
于 2012-11-04T14:00:02.763 に答える
3

In PHP, an array with manually defined keys (as opposed to consecutive integers beginning with 0) is called an "associative array" - this is what you have in your example above with '=>' delimiting keys and values.

In Javascript, an "associative array" is technically an "object" (though everything in JS is an object - that's a more detailed topic though).

Shorthand for an "indexed array" (consecutive integer keys) in JS is:

var d_names = [
  'Sunday',
  'Monday',
  // etc.
];

whereas shorthand for an object (like an associative array) in JS is:

var d_names = {
  5: 'Sunday',
  6: 'Monday',
  // etc.
};

You should however be careful when using indexed arrays -vs- objects/associative in Javascript. Javascript is not PHP, and the fact that "everything is an object" has repercussions when looping. A notable difference is that for(var i=0; i<arr.length; ++i){} iterates over an arrays keys but for(var x in obj) {} iterates over an objects "members" which can differ depending on environment/browser/etc.

于 2012-11-04T14:04:19.150 に答える
1

phpでは次のとおりです。

echo json_encode(new Array(5=>"Sunday", 6=>"Monday", 7=>"Tuesday",...11=>"Saturday")); 

次のようなJSONを生成します

   {"5":"Sunday","6":"Monday" , "7":"Tuesday"..."11":"Saturday"}

ajaxを介して送信され、結果がjsonで解析された場合、オブジェクトが返されます。

 obj= { "5": "Sunday", "6": "Monday",....  "11": "Saturday"}

これで、javascriptオブジェクト表記を使用してアクセスできます。

 alert( obj['5'] )/* SUnday*/
于 2012-11-04T14:15:24.057 に答える
1

JavaScript には連想配列はありません。次の 2 つの選択肢があります。

(ソートされていない!) キーと値のマップとして使用される単純なオブジェクト - リテラルとして簡単に記述でき、JSON 構文も:

{
    "5": "Sunday",
    "6": "Monday",
    "7": "Tuesday",
    "8": "Wednesday",
    "9": "Thursday",
    "10": "Friday",
    "11": "Saturday"    
}

または、 sparse を使用できますArray。つまり、プロパティ 0 から 4 の値はありません。次の方法で簡単に作成できます。

var arr = new Array(5); // creates an empty array object with length 5
arr.push("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");

これはリテラルと同等です

[,,,,, "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
于 2012-11-04T14:24:10.713 に答える
0

Not exactly but you can use an Object

var obj = {

5:"Sunday",
6:"Monday",
7:"Tuesday",
8:"Wednesday",
9:"Thursday",
10:"Friday",
11:"Saturday"    
}

If want to use array

var arr = [];
arr[4] = undefined;
arr.push("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
于 2012-11-04T14:04:43.453 に答える
0

これと他のいくつかのトリックでそれを達成できます

 var d_names = [,,,,,"Sunday", "Monday", "Tuesday", 
          "Wednesday", "Thursday", "Friday", "Saturday"];

 alert(d_names[5]); //prints "Sunday"
于 2012-11-04T14:06:00.510 に答える