是否可以对如下所示的数组进行排序:
array = [
{'title': 'a',
'text': 'info a1'},
{'title': 'b',
'text': 'info b1'},
{'title': 'c',
'text': 'info c1'},
{'title': 'a',
'text': 'info a2'},
{'title': 'a',
'text': 'info a3'},
{'title': 'b',
'text': 'info b2'}
]
按对排序 - 即 - 所有不必要的字典传递到数组的末尾 喜欢这个:
array = [
{'title': 'a',
'text': 'info a1'},
{'title': 'a',
'text': 'info a2'},
{'title': 'b',
'text': 'info b1'},
{'title': 'b',
'text': 'info b2'},
{'title': 'a',
'text': 'info a3'},
{'title': 'c',
'text': 'info c1'}
]
如果可以提供帮助,我还会使用Underscore。该数组还包含其他数据。我需要显示所有具有一对的元素。以及列表末尾没有配对的所有元素。我认为在显示之前对数组进行排序会更容易。
知道如何做到这一点?
答案 0 :(得分:1)
也许您考虑使用necessary
的标记,然后您可以将necessary
的真值排序到顶部,然后按title
排序。
var array =[
{ title: 'a', text: 'info a1', necessary: true },
{ title: 'b', text: 'info b1', necessary: true },
{ title: 'c', text: 'info c1', necessary: false },
{ title: 'a', text: 'info a2', necessary: true },
{ title: 'a', text: 'info a3', necessary: false },
{ title: 'b', text: 'info b2', necessary: true }
];
array.sort(function (a, b) {
return b.necessary - a.necessary || a.title > b.title || -(a.title < b.title);
});
console.log(array);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
答案 1 :(得分:0)
假设您的数组中的数据是错误的,并且应包含属性列。
function custom_compare(a, b) {
if (a.text< b.text)
return -1
if (a.text > b.text)
return 1
return 0
}
array = [
{'title': 'a',
'text': 'info a1'},
{'title': 'b',
'text': 'info b1'},
{'title': 'c',
'text': 'info c1'},
{'title': 'a',
'text': 'info a2'},
{'title': 'a',
'text': 'info c0'},
{'title': 'b',
'text': 'info b2'}
]
array.sort(custom_compare);
console.log(array);
&#13;