我已经阅读了其他有关for-of循环的问题,并想出了这段代码来计算数组中所有元素的平均值和总和,似乎有些不正确,将不胜感激。:
var i;
elmt=[]
elmt[0] = 0;
elmt[1] = 1;
elmt[2] = 2;
elmt[3] = 3;
elmt[4] = 4;
elmt[5] = 7;
elmt[6] = 8;
elmt[7] = 9;
elmt[8] = 10;
elmt[9] = 11;
var sum = 0;
for (let sum of elmt) {
sum += parseInt( elmt[i], 10 );
}
var avg = sum/elmt.length;
document.write( "The sum of all the elements is: " + sum + " The average is: " + avg );
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Loops</h2>
<p id="demo"></p>
</body>
</html>
如果您知道其他使用“ for-of”循环执行相同操作的简便方法,请随时分享。
答案 0 :(得分:2)
您正在使用两种循环。您可以选择普通的for循环,也可以选择for...of循环:
// For loop
for (i = 0; i < elms.length; i++) {
sum += elmt[i];
}
// For...of loop
for (let e of elmt) {
sum += e;
}
但是,a cleaner way是通过使用reduce
:
var sum = elms.reduce((a, c) => a + c, 0);
var avg = sum / elms.length;
答案 1 :(得分:0)
尝试以下
var elmt = [0,1,2,3,4,7,8,9,10,11];
//Using reduce()
function totalReduce(arr) {
if(!Array.isArray(arr)) return;
return arr.reduce((a, v)=>a + v);
}
//Using for loop
function totalForLoop(arr) {
if(!Array.isArray(arr)) return;
let totalNumber = 0;
for (let i=0,l=arr.length; i<l; i++) {
totalNumber+=arr[i];
}
return totalNumber;
}
// Using while loop
function totalWhile(arr) {
if(!Array.isArray(arr)) return;
let totalNumber = 0, i=-1;
while (++i < arr.length) {
totalNumber+=arr[i];
}
return totalNumber;
}
// Using array forEach
function totalForEach(arr) {
if(!Array.isArray(arr)) return;
let sum=0;
arr.forEach(each => {
sum+=each;
});
return sum;
};
var sum = totalReduce(elmt);
console.log( "Sum Using reduce: " + sum + " Average: " + sum/elmt.length );
sum = totalForLoop(elmt);
console.log( "Sum Using totalForLoop: " + sum + " Average: " + sum/elmt.length );
sum = totalWhile(elmt);
console.log( "Sum Using totalWhile: " + sum + " Average: " + sum/elmt.length );
sum = totalForEach(elmt);
console.log( "Sum Using totalForEach: " + sum + " Average: " + sum/elmt.length );
reduce()方法在数组的每个成员上执行(提供的)reduce函数,从而产生单个输出值。
答案 2 :(得分:0)
_handleAppStateChange = (nextAppState) => {
if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') {
console.log('App has come to the foreground!')
this.setState({appState: AppState.currentState});
}
else if (this.state.appState.match(/active|background/) && nextAppState === 'inactive') {
console.log('App has gone to background!')
this.setState({appState: AppState.currentState});
}
假设所有元素都是数字,否则您需要进行类型检查以忽略NaN条目。