dポイントプレゼントキャンペーン実施中!

JavaScript初心者です。連想配列のデータの取得がなかなかうまくいきません。
お力をお貸し頂けないでしょうか。できれば初心者でもわかるように教えて下さい。すいません。

PHPから配列データ $price_list をJSON形式で渡しています。
$price_listはこんな感じです
[0] => Array
(
[id] => 7
[career] => au
[color] => gole
[price] => 20000
)

[1] => Array
(
[id] => 6
[career] => docomo
[color] => ブラック
[price] => 30000
)


var cart = json_encode($price_list, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT);

結果 cartは下記のようになっています。
  [
{"id":"1","career":"au","color":"gold","price":"20000"},
{"id":"6","career":"docomo","color":"ブラック","price":"30000"}
]

このcart配列から条件(career===docomo)の配列を取得し、

それぞれ新たな変数
colorCとpriceCに
"black"と"30000"となるように入れたいのですが、どのようにすればいいのでしょうか。


ちなみに以下の処理で、docomoの配列データを取得することはできました。。。

function get_obj_by_key_value(cart, key, value) {
var result = $.grep(cart, function (e) {
return e[key] == value;
});
return result;
}
var obj1 = get_obj_by_key_value(cart, 'career, "docomo");
alert(JSON.stringify(obj1));
console.log(JSON.stringify(obj1));

質問者からの補足コメント

  • 表現が不十分だったので補足させていただきます。

    条件条件(career===docomo)で、配列のデータを特定し、
    (ここでは{"id":"6","career":"docomo","color":"ブラック","price":"30000"})
    その配列のデータから
    colorのデータ(ここでは"ブラック")とpriceのデータ(ここでは"30000")を新たな変数colorCとpriceCに入れたいのです。

    var colorC = 式(ここでは結果ブラックと入る)
    var priceC = 式(ここでは結果30000と入る)


    ちなみにJqueryの環境も整えています。

      補足日時:2017/03/10 12:38

A 回答 (2件)

ではこうですかねぇ?



<script>
var data=[
{"career":"dummy"},
{"id":"1","career":"au","color":"gold","price":"20000"},
{"career":"dummy"},
{"id":"7","career":"docomo","color":"ブラック","price":"30000"},
{"career":"dummy"},
{"career":"dummy"},
];
var mydata=data.filter(function(i){
return i.career=="docomo";
});
console.log(mydata[0]["color"]);
console.log(mydata[0]["price"]);
//変数には好きにいれてください
</script>
    • good
    • 0
この回答へのお礼

助かりました

ありがとうございます!!
うまく行きました。さらに勉強します!

お礼日時:2017/03/10 16:53

こんな感じ?



<script>
var data=[
{"id":"1","career":"au","color":"gold","price":"20000"},
{"id":"2","career":"au","color":"gold","price":"20000"},
{"id":"6","career":"docomo","color":"ブラック","price":"30000"},
{"id":"7","career":"docomo","color":"ブラック","price":"30000"},
];
data.forEach(function(i){
if(i.career=="docomo"){
i.colorC="black";
i.priceC="30000";
}
});
console.log(JSON.stringify(data));
</script>
    • good
    • 0
この回答へのお礼

ありがとう

さっそくありがとうございます!
ただ、私の表現が悪かったようす。

補足を入れさせて頂きました。もしよろしければ引き続きご教授お願いいたします。
よろしくお願いいたします。

お礼日時:2017/03/10 12:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!