javascript - 纯初学者 javascript - array 和 map

标签 javascript

我是 javascript 的新手。我只是做了一个练习,我需要数组编号将每个索引添加到下一个索引。

结果应该是:

var result = [4,8,15,21,11];

我试过这样的事情。它适用于前 4 个索引,但最后给出 NaN,因为它没有要添加的下一个数字。

var numbers = [1, 3, 5, 10, 11];

var result = numbers.map((x, index) => x + numbers[index + 1])

console.log(result)

有没有更聪明的方法来做到这一点,我如何让索引 4 保持为 11?并请在我尝试学习时进行解释。

最佳答案

这是一种完全有效的方法。如果 index 超出,您可以利用 numbers[index] 将是 undefined (不是错误)这一事实来处理最后一个索引数组的末尾,undefined 是一个 falsy 值,所以你可以使用 || 0 使用 0 而不是 undefined 如果它在那里:

var result = numbers.map((x, index) =>  x + (numbers[index+1] || 0));

实例:

var numbers = [1, 3, 5, 10, 11];

var result = numbers.map((x, index) => x + (numbers[index + 1] || 0));

console.log(result);

|| 是逻辑 OR 运算符,但它在 JavaScript 中有点特殊:它计算其左侧操作数,如果该值为 truthy¹,则采用该值作为其结果;如果左边是falsy,则运算符计算右边的操作数并将该值作为结果。

在 ES2020+ 中你可以使用新的 nullish coalescing operator (??) 而不是 ||:

var result = numbers.map((x, index) =>  x + (numbers[index+1] ?? 0));

只有当 numbers[index]nullundefined 时才会使用 0,而不是如果这是任何虚假的值(value)。


¹“truthy”和“falsy”- 真值是当用作条件(例如,if (x)x || y);假值是评估为 false 的值。伪值是 0""NaNnullundefined、当然,false。所有其他值都是真实的。 (除了浏览器上的特殊情况:document.all 由于遗留原因是假的。)

关于javascript - 纯初学者 javascript - array 和 map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64122505/

相关文章:

javascript - Flask - 每个模板都有不同的 Javascript 文件

javascript - 使用 NodeJS TLS 套接字的 HTTPS 通信

javascript - React toggle 分别阅读每个项目的更多内容

javascript - 具有默认值的 SQLite 数据库

javascript - Jquery .height() 在调整窗口大小之前不工作

javascript - 通过单击具有数字和字符串值的列的表标题对 React 表进行排序

javascript - 如何避免 HTML 文本在插入输入值时被破坏?

javascript - 从工厂访问范围

javascript - AngularJS 组件定义为函数

c# - 从 javascript 调用 asp.net 页面方法不起作用