【发布时间】:2013-11-24 23:59:19
【问题描述】:
好的,鉴于此输入(为简洁起见,其他属性已被剥离):
var names = [{
name: 'Michael'
}, {
name: 'Liam'
}, {
name: 'Jake'
}, {
name: 'Dave'
}, {
name: 'Adam'
}];
我想按另一个数组的索引对它们进行排序,如果它们不在该数组中,请按字母顺序排序。
var list = ['Jake', 'Michael', 'Liam'];
给我一个输出:
Jake, Michael, Liam, Adam, Dave
我尝试过使用 lo-dash 但不太正确:
names = _.sortBy(names, 'name');
names = _.sortBy(names, function(name) {
var index = _.indexOf(list, name.name);
return (index === -1) ? -index : 0;
});
因为输出是:
Jake, Liam, Michael, Adam, Dave
任何帮助将不胜感激!
【问题讨论】:
-
为什么是
Adam然后是Dave,你是怎么解决的? -
我希望您知道在 javascript 中有一个名为 sort() 的函数,它可以按字母顺序对数组进行排序!所以现在的问题是将你的元素移动到另一个数组中? list.sort();将输出 Adam、Dave、Jake、Michael、Liam
-
@elclanrs -“如果它们不在该数组中,则按字母顺序排序”,因此换句话说,整个数组按字母顺序排序,但如果有意义的话,这三个键排在第一位。是的,我知道
sort(),尽管我已经在项目中使用了 lodash,所以对我来说使用本地方法而不是(在我看来,更整洁的)lodash 方法并不重要。
标签: javascript arrays sorting lodash