javascript json格式键值

时间:2018-11-26 18:06:15

标签: javascript json

编写一个名为“ json_filter”的函数,该函数采用JSON格式的字符串作为对象数组格式的参数,其中每个对象都有键“质量”,“密度”,“温度”和“速度”,并且每个对象键映射到浮点数。此函数应以相同的格式将输入作为JSON字符串返回,但仅包含温度高于31.92的对象

function json_filter(format){

  var array=JSON.stringify(format);
  var array2 = [];

  for (var i = 0; i<array.length;i++){
      if (array.i.temperature>31.92){
         array2.push(array[i]);
         return JSON.parse(array2);          
      }  
  }

}

运行此命令时,它的含义如下:

  

输入['[{“速度”:11.33,“质量”:14.56,“密度”:165.09,“温度”:29.92},{“速度”:57.86,“质量”:52.23,“密度“:770.6,”温度“:35.61},{”速度“:62.23,”质量“:84.85,”密度“:85.22,”温度“:51.66},{”速度“:16.63,”质量“:51.23, “密度”:995.61,“温度”:10.27},{“速度”:31.16,“质量”:71.76,“密度”:967.53,“温度”:50.43},{“速度”:14.35,“质量”: 0.92,“密度”:808.42,“温度”:69.32},{“速度”:85.43,“质量”:41.07,“密度”:899.84,“温度”:51.05}]']:TypeError:无法读取属性'温度未定义

我不确定如何解决此问题,如果有人可以帮助,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

function json_filter(format){

  var array=JSON.parse(format);
  var array2 = [];

  for (var i = 0; i<array.length;i++){
     if (array[i]["temperature"]>31.92){
        array2.push(array[i]);
     }
  }
  return JSON.stringify(array2);
}

(答案已如上解决,但由于我是新来者,所以无法将其标记为已回答,为期2天。)

答案 1 :(得分:0)

尝试一下。

function json_filter(format){
  let arr = JSON.parse(format);
  return JSON.stringify(arr.filter(obj=>obj.temperature>31.92));
}

如果您不能使用es6或

let json_filter = (format) =>{
  let arr = JSON.parse(format);
  return JSON.stringify(arr.filter({temperature}=>temperature>31.92));
}

如果可以使用es6。请注意,第一个解决方案也适用于es6,但反之则不行。