编写一个名为“ 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:无法读取属性'温度未定义
我不确定如何解决此问题,如果有人可以帮助,我将不胜感激。
答案 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,但反之则不行。