javascript - 创建一个接受整数并生成包含整数对的数组的函数 [a, b] 按 a 和 b 的递增值排序
问题描述
我在我的软件工程训练营中遇到了这个练习问题,希望有人能指出我正确的方向。
编写一个函数 generatePairs,它接受一个整数并生成一个包含整数对 [a, b] 的数组。这些对应该通过增加 a 的值然后增加 b 的值来排序。以下是不同输入应返回的一些示例:
generatePairs(3) // [ [0, 0], [0, 1], [0, 2], [0, 3], [1, 1], [1, 2], [1, 3], [2, 2], [2, 3], [3, 3] ]
generatePairs(2) // [ [0, 0], [0, 1], [0, 2], [1, 1], [1, 2], [2, 2] ]
generatePairs(1) // [ [0, 0], [0, 1], [1,1]]
generatePairs(0) // [ [0, 0]]
到目前为止,这是我的代码:
function generatePairs (num){
array = [];
// 0 [0,0] [0,1]
// 1
// 2
for (i = 0; i<=num; i++){
array.push([i,i]);
if ((i+1)<=num) {
array.push([i,i+1])
}
if ( num - i <= num && i===0 && num < i ) {
array.push([i,num])
if (num + i < i) {
array.pop();
}
}
}
return array;
}
generatePairs(2) // [ [0, 0], [0, 1], [0, 2], [1, 1], [1, 2], [2, 2] ]
我遇到的问题是,例如,当我尝试使用 2 时,我缺少 [0,2] 子数组。我尝试解决此问题的方法主要包括额外的 if 和 else 循环,但是对于我尝试过的每一个循环,我要么最终得到比它们应该更高的子数组,要么是一个半工作系统这仅适用于 2 而不适用于可以输入到函数中的任何数字。
解决方案
是不是比这简单得多?
function generatePairs(num) {
let arr = []
for (let i = 0; i <= num; i++) {
for (let j = i; j <= num; j++) {
arr.push([i, j])
}
}
return arr
}
console.log(generatePairs(2));
推荐阅读
- angular - ng build 后,只有主页在 Angular 网站上有效
- python - 模拟上的相同调用链是否总是返回完全相同的模拟对象?
- neo4j - 从二级查询返回边缘列表
- ruby-on-rails - 如何在启用 SSL 的 Rails 应用程序中的单个 Rack::Proxy 请求中禁用 SSL?
- gstreamer - 如何等待 x264enc 在流结束时对缓冲帧进行编码
- php - 无法修改 MySQL 8 文档存储中的行:集合到数组
- php - 将 jwt 从 5.4 迁移到 1.0.x 后,Laravel 不对用户进行身份验证
- git-branch - 使用“下一个”分支发布我的下一个版本,现在我如何将它与语义发布合并到 master
- javascript - 为什么 Sonarqube 告诉我 await 在异步函数中是多余的
- mocking - 在 IntelliJ 中使用 mock 执行 karateDSL 场景