我是 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]
为 null
或 undefined
时才会使用 0
,而不是如果这是任何虚假的值(value)。
¹“truthy”和“falsy”- 真值是当用作条件(例如,if (x)
或x || y
);假值是评估为 false
的值。伪值是 0
、""
、NaN
、null
、undefined
、当然,false
。所有其他值都是真实的。 (除了浏览器上的特殊情况:document.all
由于遗留原因是假的。)
关于javascript - 纯初学者 javascript - array 和 map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64122505/