题解 | #数组求和#
数组求和
https://www.nowcoder.com/practice/cc3ce199461c4c4cb8f63db61d7eba30
function sum(arr) { let sum = 0; for(let i of arr){ sum += i; } return sum; }
function sum(arr) { let sum = 0; for(let i in arr) { sum += arr[i]; } return sum; }
function sum(arr) { let sum = 0; arr.forEach(item => sum += item); return sum; }
function sum(arr) { return arr.reduce((a, b) => a + b, 0); }
在 JavaScript 中,let i in arr
和 let i of arr
都是用来遍历数组的语句,但它们的行为略有不同。
let i in arr
遍历的是数组的索引或对象的属性名称,返回的是一个字符串类型的索引或属性名称。例如:
javascriptCopy codeconst arr = ['a', 'b', 'c']; for (let i in arr) { console.log(i); // 0, 1, 2 console.log(typeof i); // string }
在上面的例子中,i
是字符串类型的索引。
let i of arr
遍历的是数组中的元素,返回的是该元素的值。例如:
javascriptCopy codeconst arr = ['a', 'b', 'c']; for (let i of arr) { console.log(i); // 'a', 'b', 'c' console.log(typeof i); // string }
在上面的例子中,i
是字符串类型的元素值。
因此,如果要遍历数组的元素,应该使用 let i of arr
,如果要遍历数组的索引或对象的属性名称,应该使用 let i in arr
。
在JavaScript中,forEach()方法用于遍历数组中的元素,对每个元素执行一个回调函数。该方法不返回新的数组,而是在原数组上进行操作。
forEach()方法的语法如下:
Copy codearray.forEach(callback(currentValue[, index[, array]])[, thisArg]);
其中,参数callback是必需的,表示要对每个元素执行的函数。参数currentValue是必需的,表示当前被处理的元素。参数index是可选的,表示当前元素在数组中的索引。参数array是可选的,表示正在处理的数组。参数thisArg是可选的,表示在执行回调函数时要使用的this值。
下面是一个简单的示例,展示如何使用forEach()方法遍历数组并打印每个元素的值:
var array = [1, 2, 3, 4, 5]; array.forEach(function(element) { console.log(element); });
这将输出以下内容:
1 2 3 4 5
在这个示例中,我们定义了一个名为array的数组,然后使用forEach()方法遍历它。在回调函数中,我们打印了当前元素的值。注意,我们没有使用index或array参数。如果需要使用它们,可以在回调函数中包含它们。
JavaScript中的reduce方法可以用来对数组中的所有元素进行累加、累乘、字符串拼接等操作。它接受一个回调函数作为参数,该函数可以接受四个参数:累加器(accumulator)、当前值(currentValue)、当前索引(currentIndex)、原数组(array)。
reduce方法的基本语法如下:
array.reduce(callback[, initialValue]);
其中,callback是回调函数,initialValue是可选的初始值。如果指定了initialValue,则第一次调用回调函数时accumulator的值为initialValue,否则accumulator的值为数组中的第一个元素。
下面是一个简单的例子,演示如何使用reduce方法对数组中的所有元素求和:
const numbers = [1, 2, 3, 4, 5]; const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0); console.log(sum); // 输出15
在上面的例子中,reduce方法首先将accumulator的值设为0,然后依次将数组中的元素累加到accumulator中,最终得到了所有元素的和。
除了累加操作之外,reduce方法还可以用于其他类型的累计操作,例如字符串拼接、对象合并等。下面是一个使用reduce方法将数组中的所有元素转换为字符串的例子:
const fruits = ['apple', 'banana', 'cherry']; const fruitString = fruits.reduce((accumulator, currentValue) => accumulator + ',' + currentValue); console.log(fruitString); // 输出"apple,banana,cherry"
在上面的例子中,reduce方法首先将accumulator的值设为数组中的第一个元素("apple"),然后将每个元素依次拼接到accumulator中,最终得到了一个由所有元素组成的字符串。