【问题标题】:Sort 2D array of pairs in JavaScript在 JavaScript 中对二维数组进行排序
【发布时间】:2023-01-11 10:35:52
【问题描述】:
我需要在 JavaScript 中对二维数组进行排序。
const a = [
[1, 1],
[1, 2],
[1, 3],
[5, 6]
]
const b = [
[5, 6],
[1, 2],
[1, 3],
[1, 1]
]
b.sort((c, d) => d[0] + d[1] - c[0] + c[1]);
console.log(b)
function compare(a, b) {
if (a.length != b.length) return false;
for (let i = 0; i < b.length; i++)
for (let j = 0; j < b[i].length; j++)
if (a[i][j] !== b[i][j]) return false;
return true;
}
console.log(compare(a, b))
我想将数组 b 排序为等于数组 a。当然,现实生活中的数组要长得多。这只是一个例子。
我已经编写了用于比较的函数,但是排序函数无法正常工作。你能帮我解决这个问题吗?
【问题讨论】:
标签:
javascript
arrays
multidimensional-array
【解决方案1】:
问题不是您的比较功能,而是您的.sort() 调用。
首先,d[0] + d[1] - c[0] + c[1] 倒退了。您应该从c 中减去d 的元素,而不是相反。像这样:c[0] + c[1] - d[0] + d[1]。
其次,您的操作顺序有误。您需要从c 中减去d 的元素,但是您当前的代码减去d 的一个元素并添加另一个。你需要分配负号,就像这样:c[0] + c[1] - d[0] - d[1]
const a = [
[1, 1],
[1, 2],
[1, 3],
[5, 6]
]
const b = [
[5, 6],
[1, 2],
[1, 3],
[1, 1]
]
b.sort((c, d) => c[0] + c[1] - d[0] - d[1]);
console.log(b)
function compare(a, b) {
if (a.length != b.length) return false;
for (let i = 0; i < b.length; i++)
for (let j = 0; j < b[i].length; j++)
if (a[i][j] !== b[i][j]) return false;
return true;
}
console.log(compare(a, b))