javascript中按子数组值排序数组

javascript中按子数组值排序数组,javascript,arrays,sorting,Javascript,Arrays,Sorting,我在javascript中有一个数组,带有一个距离整数和一个整数值。我正在尝试对它们进行分类,但我似乎无法使其正常工作 nodes = [[{distance:15}],[{distance:123}],[{distance:2}]]; function sortNodes(a,b) { if (a.distance < b.distance) return -1; if (a.distance > b.distance) return 1;

我在javascript中有一个数组,带有一个距离整数和一个整数值。我正在尝试对它们进行分类,但我似乎无法使其正常工作

nodes = [[{distance:15}],[{distance:123}],[{distance:2}]];

function sortNodes(a,b) {
   if (a.distance < b.distance)
     return -1;
   if (a.distance > b.distance)
     return 1;
     return 0;
   }
console.log(nodes.slice(0).sort(sortNodes));
需要了解这里发生的事情及其原因。

您需要返回a[0]。距离-b[0]。距离;这是因为:

距离是一个整数类型,所以您不需要比较它并使用比较运算符返回1、-1或0。 在嵌套数组中有一个对象的数组,因此使用[0]在参数a和b中获取该对象。 变量节点=[ [{ 距离:15 }], [{ 距离:123 }], [{ 距离:2 }] ]; 函数sortNodesa,b{ 返回a[0]。距离-b[0]。距离; } console.lognodes.slice0.sortsortNodes; 传递给排序函数的比较器函数采用 数组中的值

因此,正如您所提到的,您有一个数组数组,comparator函数的参数将是数组

因此,您可以使用a[0]和b[0]来访问对象

代码如下:

nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];

function sortNodes(a, b) {
    if (a[0].distance < b[0].distance) return -1;
    if (a[0].distance > b[0].distance) return 1;
    return 0;
}
console.log(nodes.slice(0).sort(sortNodes));
这也将有助于:

nodes = [[{distance:15}],[{distance:123}],[{distance:2}]];

function sortNodes(a,b) {
    return a[0].distance > b[0].distance;
}
console.log(nodes.slice(0).sort(sortNodes));

正如您所说,您有一个数组。a和b是包含一个对象的数组。函数排序节点[{distance:a}],{distance:b}]{返回a-b;}
nodes = [[{distance:15}],[{distance:123}],[{distance:2}]];

function sortNodes(a,b) {
    return a[0].distance > b[0].distance;
}
console.log(nodes.slice(0).sort(sortNodes));