javascript - 如果数组中任何元素的总和等于给定值,则检查数组
问题描述
[1,2,3,6], 3 = True <== 1+2=3
[1,2,3,6], 9 = True <== 3+6=9
[1,2,3,6], 5 = True <== 2+3=5
[1,2,3,6], 10 = False <== 1+2, 2+3, 3+6, 6+1 not equal to 10
[6,2,3,1], 10 = False <== 6+2, 2+3, 3+1, 1+6 not equal to 10
[6,3,3,1], 6 = True <== 3+3=6
如果给定的总和等于数组中任意两个元素的总和,则首选 JavaScript ,函数需要返回 true;否则函数需要返回false。
解决方案
这是一种非常简单的方法,可以检查数组中的两个数字是否等于一个值。请注意,这只允许不同的总和(与自身相加的数字不计算在内)。
function test(n, arr){
return arr.some((item, i) => arr.slice(i+1).includes(n-item))
}
let arr = [1, 2, 3, 6]
console.log(test(5, arr)) // true 2+3
console.log(test(4, arr)) // true 1+3
console.log(test(12, arr)) // false because 6 + 6 doesn't count
console.log(test(10, arr)) // false no sums
如果数组都是正数,您可以在短路情况下添加一个额外的测试,这与以下情况不一样:
return arr.some((item, i) => n > item && arr.slice(i+1).includes(n-item))
如果您想允许数字与它们相加,只需对整个数组进行测试:
return arr.some((item, i) => arr.includes(n-item))
推荐阅读
- python - 具有抽象类的并行处理
- google-cloud-platform - Google Cloud Console - SQL - 无法加载错误
- javascript - mini-css-extract-plugin 生成两个额外的 JS 文件
- c++ - 为什么即使这种转换不合法,std::is_convertible_v 也会返回 true?
- python - np.cov() 矩阵返回意外值
- google-cloud-platform - GCP 云互连和 VPC 对等互连
- javascript - 是什么导致 javascript 中的超小数字被识别为不同的布尔值?
- android-studio - 我在哪里可以找到 android studio 中的图标视图更少的属性
- python - 用硒查找元素等
- ios - 图像溢出 UIImageView 边界