2016-09-26 21 views
0

JSON値にネストされたArrayの値とJSONも配列にネストされた値を取得するにはどうすればよいですか?JSON値にネストされたArrayの値とJSONも配列にネストされた値を取得するにはどうすればよいですか?

var contacts = [ 
     { 
      "firstName": "Akira", 
      "lastName": "Laine", 
      "number": "0543236543", 
      "likes": ["Pizza", "Coding", "Brownie Points"] 
     }, 
     { 
      "firstName": "Harry", 
      "lastName": "Potter", 
      "number": "0994372684", 
      "likes": ["Hogwarts", "Magic", "Hagrid"] 
     }, 
     { 
      "firstName": "Sherlock", 
      "lastName": "Holmes", 
      "number": "0487345643", 
      "likes": ["Intriguing Cases", "Violin"] 
     }, 
     { 
      "firstName": "Kristian", 
      "lastName": "Vos", 
      "number": "unknown", 
      "likes": ["Javascript", "Gaming", "Foxes"] 
     } 
    ]; 

/**/

私は好き& "firstNameの" の値を取得したい場合: "アキラ"、私は何をすべきか? 誰かが助けることができますか?

 var firstName = "Akira", prop = "likes"; 
     for (var i = 0; i < contacts.length; i++) { 
      var a; 
      console.log("contacts[i].firstName = "+contacts[i].firstName); 
      if(contacts[i].firstName == firstName){ 
       a = true; 
      }else{ 
       a = false; 
      } 
     //get the cales of likes? 
     console.log("contacts[i].prop[i].value() = "+contacts[i].prop[i].value()); 
     //contacts[i].prop[i].value(); ? 
     } 
+1

問題は何ですか?あなたのコードは大丈夫です。 'a = true'がある場合は、配列を取得するために' contacts [i] .likes'や 'contacts [i] [prop]'に行くことができます。 – Shilly

+0

https://gist.github.com/xgqfrms-GitHub/78fbe4ef38ee1e50965c1558a5b6245f – xgqfrms

+0

https://github.com/gildata/RAIO/issues/61 –

答えて

0

contacts配列内のオブジェクトは、その名前propである性質を持っていません。幸運なことに、配列の値を取得する方法と同様に、オブジェクトのプロパティに名前でアクセスすることができます。contacts[i][prop]を使用すると、名前が変数propの値であるプロパティの値が取得されます。この場合は"likes"です。 likesも配列なので、contacts配列のインデックス作成と同じ方法でインデックスを作成して値を取得します。

var firstName = "Akira", prop = "likes"; 
for (var i = 0; i < contacts.length; i++) { 
    var a; 
    console.log("contacts[" + i + "].firstName = " + contacts[i].firstName); 
    if (contacts[i].firstName == firstName){ 
     a = true; 
    } else { 
     a = false; 
    } 

    // get the likes array and loop through to print the values 
    // you might want to put this where a = true; is if you only want to get 
    // the likes where the firstName matches 
    var likes = contacts[i][prop]; 
    for (var j = 0; j < likes.length; j++) { 
     console.log("contacts[" + i + "]." + prop + "[" + j + "] = " + likes[j]); 
    } 
} 
0

以下のようになります。

var contacts = [ 
 
     { 
 
      "firstName": "Akira", 
 
      "lastName": "Laine", 
 
      "number": "0543236543", 
 
      "likes": ["Pizza", "Coding", "Brownie Points"] 
 
     }, 
 
     { 
 
      "firstName": "Harry", 
 
      "lastName": "Potter", 
 
      "number": "0994372684", 
 
      "likes": ["Hogwarts", "Magic", "Hagrid"] 
 
     }, 
 
     { 
 
      "firstName": "Sherlock", 
 
      "lastName": "Holmes", 
 
      "number": "0487345643", 
 
      "likes": ["Intriguing Cases", "Violin"] 
 
     }, 
 
     { 
 
      "firstName": "Kristian", 
 
      "lastName": "Vos", 
 
      "number": "unknown", 
 
      "likes": ["Javascript", "Gaming", "Foxes"] 
 
     } 
 
    ], 
 
    getMeObj = (d,p,v,t) => d.filter(o => o[p] === v)[0][t]; 
 
    console.log(getMeObj(contacts,"firstName", "Akira", "likes"));

0

次のコードは、私はあなたのコードを修正した

var firstName = "Akira", prop = "likes"; 
    for(var i in contacts) 
    { 
     if(contacts[i].firstName == firstName){ 
     var likes = contacts[i][prop]; 
     console.log(likes); 
    } 
0

に動作します。あなたがより多くを必要とする場合の詳細は、私に尋ねるが、私はコードがサイドノートとして

var contacts = [{ 
    "firstName": "Akira", 
    "lastName": "Laine", 
    "number": "0543236543", 
    "likes": ["Pizza", "Coding", "Brownie Points"] 
}, { 
    "firstName": "Harry", 
    "lastName": "Potter", 
    "number": "0994372684", 
    "likes": ["Hogwarts", "Magic", "Hagrid"] 
}, { 
    "firstName": "Sherlock", 
    "lastName": "Holmes", 
    "number": "0487345643", 
    "likes": ["Intriguing Cases", "Violin"] 
}, { 
    "firstName": "Kristian", 
    "lastName": "Vos", 
    "number": "unknown", 
    "likes": ["Javascript", "Gaming", "Foxes"] 
}]; 
var firstName = "Akira" 
    , prop = "likes"; 
for (var i = 0; i < contacts.length; i++) { 
    var a; 
    console.log("contacts[" + i + "].firstName = " + contacts[i].firstName); 
    if (contacts[i].firstName == firstName) { 
    a = true; 
    } else { 
    a = false; 
    } 
    for (var n = 0; n < contacts[i].likes.length; n++) { 
    console.log("contacts[" + i + "].likes[" + n + "] = " + contacts[i].likes[n]); 
    } 
} 

十分に単純だと思う:答えは学習を支援するためアスカーのと同じレベルにする必要があります:)

+0

質問は、あなたが持っているときにプロパティを取得する方法を尋ねているようですこの場合、 'var prop =" likes "'というプロパティの名前を持つ変数です。この答えは、変数 'prop'を使わずに' likes'プロパティを直接取得しているので、実際に質問に答えるかどうかはわかりません。 (ちょうど私といくつかの人が作ったことを前提としていますが、あなたが実際に尋ねられていることに答えたのはとてもうまくいくかもしれません) – jonhopkins

関連する問題