Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For循环采用javascript中对象属性的平均值_Javascript_Arrays_Loops_Mapbox - Fatal编程技术网

For循环采用javascript中对象属性的平均值

For循环采用javascript中对象属性的平均值,javascript,arrays,loops,mapbox,Javascript,Arrays,Loops,Mapbox,我有一系列的功能,我想找到一个属性的平均值 var features = map.queryRenderedFeatures({ layers: ['my_layer']}); console.log(features) 这将返回: (10) [Feature, Feature, Feature, Feature, Feature, Feature, Feature, Feature, Feature, Feature] 0:Feature layer:{id: "my_layer", typ

我有一系列的功能,我想找到一个属性的平均值

var features = map.queryRenderedFeatures({ layers: ['my_layer']});
console.log(features)
这将返回:

(10) [Feature, Feature, Feature, Feature, Feature, Feature, Feature, Feature, Feature, Feature]
0:Feature
layer:{id: "my_layer", type: "circle", source: "tbr", filter: Array(3), layout: {…}, …}
properties:{bikeid: 15847, diff.time: 2.25, …}
但是,当我尝试获取每个功能的
diff.time
属性的总和和长度时,会返回一个语法错误和一个意外的标识符

var sum = 0 
var length = 0    

    for each (var feature in features) {
    sum += feature.properties['diff.time'];
    length ++

    }

    console.log(sum/length)


Uncaught SyntaxError: Unexpected identifier

这种语法是如何不正确的?为了达到预期的结果,应该更改哪些内容

我发现你的代码有3个问题

在javascript中,
for each
不是有效的循环,
数组#forEach
是数组上的方法

当您在中执行for时,您应该在对象键上进行迭代,它仍然可以工作,但是您将在length属性上循环,并且在迭代数组时效率不高,因此在这种情况下,您应该执行for循环,并在数组的索引上进行迭代

最后一个问题是,在合法的情况下命名属性
diff.time
不是命名属性的好方法,因为您将无法使用点运算符访问它

var sum = 0
var length = 0

for(var i; i < features.length; i+=1) {
  sum += features[i].properties['diff.time']; // don't think diff.time will work
  length++
}

console.log(sum / length)

我发现你的代码有3个问题

在javascript中,
for each
不是有效的循环,
数组#forEach
是数组上的方法

当您在中执行for时,您应该在对象键上进行迭代,它仍然可以工作,但是您将在length属性上循环,并且在迭代数组时效率不高,因此在这种情况下,您应该执行for循环,并在数组的索引上进行迭代

最后一个问题是,在合法的情况下命名属性
diff.time
不是命名属性的好方法,因为您将无法使用点运算符访问它

var sum = 0
var length = 0

for(var i; i < features.length; i+=1) {
  sum += features[i].properties['diff.time']; // don't think diff.time will work
  length++
}

console.log(sum / length)

提示:每个的
是什么?提示:每个
是什么?