JSON Stringify未将我想要的数据保存在localStorage中

时间:2018-06-19 12:09:39

标签: javascript angularjs json

我正在尝试将具有一个数组和一个整数的对象保存在本地存储中。

var test = potenciaFacturaService.getPotencia(JSON.parse(getVariable("facturas")),null,getVariable("tipo_contrato"));
    console.log(test);
    var new_facturas = {
        info: test,
        error:0
    };
    console.log(new_facturas);
    setVariable("new_facturas", JSON.stringify(new_facturas));

在服务中调用方法时,我的test变量获取一个数组,我尝试使用方法setVariable保存该对象,该方法仅调用要保存在localStorage中的数据。 打印new_facturas的值时,这是输出

{info: Array(0), error: 0}
 error:0
info:Array(15)
0:{id: "776142", kwh: 0}
1:{id: "1269777", kwh: 7045}
2:{id: "887831", kwh: 0}
3:{id: "562951", kwh: 0}
4:{id: "390243", kwh: 1995}
5:{id: "669372", kwh: 0}
6:{id: "1019550", kwh: 0}
7:{id: "469265", kwh: 0}
8:{id: "1145145", kwh: 0}
9:{id: "253231", kwh: 0}
10:{id: "150663", kwh: 9191}
11:{id: "318047", kwh: 0}
12:{id: "119228", kwh: 0}
13:{id: "93050", kwh: 399.999}
14:{id: "201014", kwh: 23}

但是当检查localStorage时我有这个。

{info: [], error: 0}
error:0
info:[]

空数组,有人可以帮助我解决这个问题吗?

编辑。添加getPotencia

this.getPotencia= function(facturas, id,tipocontrato){
  console.log(facturas);
  console.log(id);
  console.log(tipocontrato);
  var potencias = [];
  var flag;

  filtrar();
  function filtrar(){
    Object.entries(facturas).forEach(([key,val])=>{
          if (key=="info"){
            Object.entries(val).forEach(([key,valor])=>{
            //console.log(valor.id);
            $http({
              url:'http://api',
              method:"POST",
              data:{id_factura:valor.id, tipo_contrato:tipocontrato},
              headers:{
                "Content-Type":"application/json; charset=utf-8"
              }
            })
            .then(function(response){
              //console.log(response.data);
              if (response.data.error==0){
                //console.log(response.data.factura.length);
                var suma=0;
                var id;
                if (response.data.factura.length>1){
                  for (var i=0;i<response.data.factura.length;i++){
                  //  console.log(response.data.factura[i].kwh);
                    suma = suma + parseFloat(response.data.factura[i].kwh);
                    id = response.data.factura[1].factura_id;
                  }
                  if (id==valor.id){
                    console.log(valor.kwh=suma);
                    console.log(valor);
                    potencias.push({
                      id: valor.id,
                      kwh:suma
                    });
                  }
                }
                if (response.data.factura.length==1){
                  if (response.data.factura[0].factura_id==valor.id){
                    valor.kwh = response.data.factura[0].kwh;
                    potencias.push({
                      id: valor.id,
                      kwh:parseFloat(response.data.factura[0].kwh)
                    });
                  }
                }

              }

            })
            })
            console.log(val);
            console.log(potencias);
            agregar(potencias);
          }
      })
  }

    function agregar(facturas){
      console.log("agregando");
      console.log(typeof facturas);
      for (var i=0; i<facturas.length;i++){
        console.log(facturas[i]);
      }

    }
    return potencias;
}

1 个答案:

答案 0 :(得分:0)

我认为问题是异步的,试图在foreach循环上调用$http时,我做了几乎相同的事情,只是在服务器端。在foreach循环中进行查询并返回该信息。