使用相同的键将值存储在javascript对象中

时间:2014-03-13 15:03:36

标签: javascript object

我有以下代码从JSON响应中提取值。我想要做的是以类似于如何使用php中的关联数组的方式存储数据。抱歉代码效率低下。写下的数组注释是我希望它在对象中查看的方式。

$.each(responseData, function(k1,v1){
            if(k1 == "0"){
                $.each(v1, function(k2,v2){
                    $.each(v2, function(k3, v3){
                        if(k3 == "val"){
                          //store in object here
                          //Array1 = array("time"=>k2, "iVal"=>v3)
                          console.log(k3 + v3 + k2);
                        }else{
                           //Array2 = array("time"=>k2, "aVal"=>v3)
                           console.log(k3 + v3 + k2);
                        }
                    });
                });
            }
});

所有信息都存在,但我不确定如何为对象中的值存储每个实例。我确实尝试将它存储起来:

//obj created outside

obj1.date = k2;
obj2.iVal = v3;

但是这样做每次都明显覆盖,并且只保留最后一个实例,所以我想知道如何才能将所有值存储起来?

编辑:添加了所需的输入和输出。

输入

{"0":{"18.00":{"iVal":85.27,"aVal":0.24},"19.00":{"iVal":85.27,"aVal":0.36},"20.00":{"iVal":0,"aVal":0}}, "success":true}

期望的输出

array1 = {"time":"18.00", "iVal":85.27},{"time":"19.00", "iVal":85.27},{"time":"20.00", "iVal":0}
array2 = {"time":"18.00", "aVal":0.24},{"time":"19.00", "aVal":0.36},{"time":"20.00", "aVal":0}

2 个答案:

答案 0 :(得分:1)

试试这个:

var g1=[];
var g2=[];


for ( a in o[0])
  {
    g1.push({time:a , iVal:o[0][a]['iVal']})
    g2.push({time:a , aVal:o[0][a]['aVal']})

}

http://jsbin.com/qividoti/3/edit

enter image description here

答案 1 :(得分:0)

通过在ajax调用的成功回调中调用JSON.parse(jsonString),可以将json响应转换回js对象文字。

从那时起就不需要迭代该对象,因为你可以像任何其他js对象一样导航它,这可以通过两种方式完成

js方式 - >点符号

var obj = JSON.parse(jsonStirng);
var value = obj.value;

或者像php数组

var value = obj["value"];