我正在尝试根据每个列表的第 5 个和第 6 个值的乘积对一个列表数组进行排序,其中每个列表包含 6 个浮点数。
我需要这个:
const name =
[ [ -0.83, 0.34, -0.44, -0.82, -0.93, -0.29 ]
, [ 0.85, 0.02, 0.32, -0.58, -0.7, 0.01 ]
, [ -0.83, -0.15, -0.47, 0.44, -0.35, 0.35 ]
, [ -0.09, -0.62, -0.19, -0.86, 0.15, 0.04 ]
, [ -0.65, -0.99, -0.41, -0.45, -0.16, 0.38 ]
, [ 0.47, 0.64, -0.15, -0.59, -0.41, 0.54 ]
, [ 0.32, -0.15, -0.97, 0.35, 0.72, -0.15 ]
]
变成这样:
const name =
[ [ 0.47, 0.64, -0.15, -0.59, -0.41, 0.54 ]
, [ -0.83, -0.15, -0.47, 0.44, -0.35, 0.35 ]
, [ 0.32, -0.15, -0.97, 0.35, 0.72, -0.15 ]
, [ -0.65, -0.99, -0.41, -0.45, -0.16, 0.38 ]
, [ 0.85, 0.02, 0.32, -0.58, -0.7, 0.01 ]
, [ -0.09, -0.62, -0.19, -0.86, 0.15, 0.04 ]
, [ -0.83, 0.34, -0.44, -0.82, -0.93, -0.29 ]
]
这是我目前的代码:
function product(name) {
return name.sort((a,b) => (a[4] - b[4]) * (a[5] - b[5]));
}
答案 0 :(得分:0)
我认为您的意思是比较每个数组的乘积,而不是差异的乘积。
function product(name) {
return name.sort((a, b) => (a[4] * a[5]) - (b[4] * b[5]));
}
let a = [[-0.83, 0.34, -0.44, -0.82, -0.93, -0.29],
[0.85, 0.02, 0.32, -0.58, -0.7, 0.01],
[-0.83, -0.15, -0.47, 0.44, -0.35, 0.35],
[-0.09, -0.62, -0.19, -0.86, 0.15, 0.04],
[-0.65, -0.99, -0.41, -0.45, -0.16, 0.38],
[0.47, 0.64, -0.15, -0.59, -0.41, 0.54],
[0.32, -0.15, -0.97, 0.35, 0.72, -0.15]];
console.log(product(a));
输出:
[ [ 0.47, 0.64, -0.15, -0.59, -0.41, 0.54 ],
[ -0.83, -0.15, -0.47, 0.44, -0.35, 0.35 ],
[ 0.32, -0.15, -0.97, 0.35, 0.72, -0.15 ],
[ -0.65, -0.99, -0.41, -0.45, -0.16, 0.38 ],
[ 0.85, 0.02, 0.32, -0.58, -0.7, 0.01 ],
[ -0.09, -0.62, -0.19, -0.86, 0.15, 0.04 ],
[ -0.83, 0.34, -0.44, -0.82, -0.93, -0.29 ] ]