$i = Array(
0 => "a",
1 => "b",
2 => "c",
3 => "d",
4 => "e",
5 => "f",
6 => "g",
7 => "h",
8 => "i",
);
$p = Array(
0 => "k",
1 => "2",
2 => "p",
3 => "w",
4 => "5",
5 => "o",
6 => "h",
7 => "8",
8 => "u",
);
array_multisort($p, SORT_DESC, $i);
print_r($i);
数组$i 根据 数组$p 的降序进排列,打印结果为,
Array
(
[0] => d
[1] => i
[2] => c
[3] => f
[4] => a
[5] => g
[6] => h
[7] => e
[8] => b
)
那么如何 使用javascript实现 这个PHP 的 array_multisort($p, SORT_DESC, $i); 功能呢,要求结果和php 完全一致??
折腾了很久了,没找到办法???
针对 @幻灰龙 这位大佬的方法,使用 x.map((e,i)=>i).sort((i,j)=>y[j].charCodeAt(0)-y[i].charCodeAt(0)).map(i=>x[i]); 以上输出结果倒是和 php的一致,但是数组在长一点就不一样了。
例如:
var x = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
var y = ["e", "0", "0", "5", "6", "0", "b", "9", "6", "a", "c", "5", "5", "d", "3", "b", "5", "5", "f", "9", "8", "5", "d", "2", "9", "f", "b", "d", "6", "3", "d", "1", "9", "8", "c", "6", "1", "e", "9", "6", "a", "4", "1", "a", "d", "0", "1", "e", "9", "f", "c", "b", "c", "b", "4", "c", "7", "f", "0", "7", "7", "6"];
x.map((e,i)=>i).sort((i,j)=>y[j].charCodeAt(0)-y[i].charCodeAt(0)).map(i=>x[i]);
//javascript输出的是
62) ["s", "z", "N", "V", "a", "B", "L", "n", "w", "1", "4", "I", "k", "8", "O", "Q", "T", "g", "p", "0", "P", "R", "j", "E", "H", "h", "t", "y", "6", "C", "M", "u", "7", "U", "X", "Y", "e", "i", "2", "9", "D", "Z", "d", "l", "m", "q", "r", "v", "F", "S", "o", "3", "x", "5", "A", "G", "K", "b", "c", "f", "J", "W"]
//而php 的 array_multisort($y, SORT_DESC, $x); 输出的是
Array
(
[0] => N
[1] => V
[2] => s
[3] => z
[4] => B
[5] => L
[6] => a
[7] => 1
[8] => 4
[9] => I
[10] => n
[11] => w
[12] => 8
[13] => O
[14] => Q
[15] => T
[16] => k
[17] => 0
[18] => P
[19] => R
[20] => g
[21] => p
[22] => E
[23] => H
[24] => j
[25] => 6
[26] => C
[27] => M
[28] => h
[29] => t
[30] => y
[31] => 7
[32] => u
[33] => U
[34] => X
[35] => Y
[36] => 2
[37] => 9
[38] => D
[39] => Z
[40] => e
[41] => i
[42] => d
[43] => l
[44] => m
[45] => q
[46] => r
[47] => v
[48] => F
[49] => S
[50] => 3
[51] => o
[52] => x
[53] => 5
[54] => A
[55] => G
[56] => K
[57] => J
[58] => W
[59] => b
[60] => c
[61] => f
)