2012-02-08 6 views
1

私はこの配列パーサーではどのようなjavascript技法が使用されていますか?

function dump(obj) { 
      obj = obj || {}; 
      var result = []; 
      $.each(obj, function (key, value) { result.push('"' + key + '":"' + value + '"'); }); 
      return '{' + result.join(',') + '}'; 
     } 

指定された配列の内容をダンプし、次のスクリプトを持っている...しかし、私はこれを「アレイ」の機能を理解していません。それぞれの声明の中で何が起こっているのかを理解するために私が何を学ぶ必要があるか教えてくれますか?以下

更新

e.values objがどのように見えるかの例です。

enter image description here

+0

このコードはちょうど 'JSON.stringify'を再作成したものです。 –

+1

関数の問題点は、数値とブール値が引用符で囲まれ、その型がStringに変更されることです。組み込みの 'JSON.stringify()'関数をお勧めします。 –

答えて

2

これは、反復処理を行うために、eachhttp://api.jquery.com/jQuery.each/にjQueryを使用しています。ここにあなたのdumpfunctionで何が起こるかです:あなたは、任意のObjectのキーを取得する必要がある場合は

function dump(obj) { 
    // If 'obj' is falsy then make 'obj' a new Object 
    obj = obj || {}; 

    // Create a new Array 
    var result = []; 

    // Loop over each property in 'obj' and add 
    // "key":"val" String to the 'result' Array, 
    $.each(obj, function (key, value) { result.push('"' + key + '":"' + value + '"'); }); 

    // Join the Array using "," as the delimiter and wrap 
    // this with { ... }. Example of arr.join(): 
    //  var arr = [1, 2, 3]; 
    //  console.log(arr.join(".")); // "1.2.3" 
    //  console.log(arr.join("|")); // "1|2|3" 
    return '{' + result.join(',') + '}'; 
} 

編集 あなたが使用することができます。

function getKeys(obj) { 
    var keys = [], 
     i; 
    for (var i in obj) { 
     if (obj.hasOwnProperty(i)) { 
      keys.push(i); 
     } 
    } 
    return keys; 
} 

var keys = getKeys({key: "value"}); // ["key"] 

はここworking exampleです。

Underscore.jsの_.keys()もご覧ください。

+0

おかげで!私はそれを綿密に勉強していきます。 objの "キー"にアクセスする別の方法を教えてください。 objの長さは常に1であると仮定します。 – LamonteCristo

+1

これは助けになりました:-) 'Object'は潜在的に多くのキーを持っています。ただ一つではない。たとえば、 'var o = {a:" b "、c:" d "}'とします。この 'Object'には' a'と 'c'の2つのキーがあります。これらのキーの値には、 'var val = o.a;'または 'var key =" a "の2つの方法でアクセスできます。 var val = o [key] '。 – jabclab

+0

'o [key]'を実行しようとすると、私はキーの定義されていません。質問を例文で更新しました。文字列 'EntryCommentPublic1DropDown'を抽出するには – LamonteCristo

1

基本的にすべてのそのコードが実行されるオブジェクトの文字列バージョンを作成しています。

デモ:http://jsfiddle.net/GYJAT/


$.eachは、アレイを通過jQueryの関数です。

+0

これは "連想配列"でしょうか?私は配列のキーにどのようにアクセスできるかを理解しようとしています。 – LamonteCristo

+0

@ makerofthings7 Javascriptには実際に関連付けられた配列はありません。これはオブジェクトであり(配列ではない)、より適切にキー値ストアと考えることができます。配列は本質的に順序付けられ、オブジェクトは本質的に順序付けられていません。 – benekastah

0

あなたが残したコメントに基づいて、主な質問はオブジェクトのキーを取得する方法です。

まず、あなたのコードサンプルでjQueryの各機能の一部として、あなたのために自動的にそれをしない:...

$ .each(OBJ、機能(キー、値)

あなたがする必要がある場合それを自分で行う、最近のブラウザは、キーのプロパティを持っている:Object.keysは(OBJ)古いブラウザでは

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys

、あなたは(hasOwnPropertyをテストに注意してください)forループを使用する必要があります:

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/HasOwnProperty#Example:_Iterating_over_the_properties_of_an_object

関連する問題