2017-07-19 104 views
0

说我有以下阵列排序阵列

[[['kodak'], 1], 
[['It\'s', 'a', 'kodak'. 'moment'], 4], 
[['It\'s', 'a', 'kodak'], 3]] 

,我想由每个内阵列的从最小到最大的第二个参数,以便于内数组进行排序:

[[['It's', 'a', 'kodak'. 'moment'], 4], 
[['It's', 'a', 'kodak'], 3], 
[['kodak'], 1]]; 

有什么建议吗?我知道我可以按照长短排序,但我确实需要这种格式的数据。

回答

2

它总是使用数组的第二个位置进行排序。

const array = [[['kodak'], 1], [['It\'s', 'a', 'kodak', 'moment'], 4], [['It\'s', 'a', 'kodak'], 3]] 
 

 
const result = array.sort((a, b) => a[1] < b[1]) 
 

 
console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }

0
var arr = [[['It\'s', 'a', 'kodak', 'moment'], 4], 
[['It\'s', 'a', 'kodak'], 3], 
[['kodak'], 1]]; 

arr.sort(function(a, b){ 
    return a[1]>b[1] 
}) 
+1

虽然此代码段可以解决的问题,[包括一个解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers )真的有助于提高你的帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 –

1

取而代之的是给出答案的,我建议使用的利用全方位的Array#sort比较函数的返回值的比较mechanique。在这种情况下,排序方法期望值小于零,零或大于零的值,这反映了数组之间的关系。

拟议的a[1] < b[1]a[1] > b[1]永远不会返回值-1。这意味着,一个简单排序的反转数组不一定等于用swedhed参数排序的数组。

该解决方案取得了所需的全部范围的返回值,并且在这种对称方式中如上所述。

var array = [[['kodak'], 1], [['It\'s', 'a', 'kodak', 'moment'], 4], [['It\'s', 'a', 'kodak'], 3]]; 
 

 
array.sort(function (a, b) { 
 
    return b[1] - a[1]; 
 
}); 
 

 
console.log(array);