JS Underscore:成对的dicts数组

时间:2017-10-30 12:54:17

标签: javascript arrays sorting underscore.js

是否可以对如下所示的数组进行排序:

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。该数组还包含其他数据。我需要显示所有具有一对的元素。以及列表末尾没有配对的所有元素。我认为在显示之前对数组进行排序会更容易。

知道如何做到这一点?

2 个答案:

答案 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;
&#13;
&#13;

答案 1 :(得分:0)

假设您的数组中的数据是错误的,并且应包含属性列。

&#13;
&#13;
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;
&#13;
&#13;