在JavaScript中根据数组的索引对对象排序?
好的,那么给定这个输入(为了简洁起见,其他属性已被剥离): 我想按另一个数组的索引对它们进行排序,如果它们不在该数组中,请按字母顺序排序在JavaScript中根据数组的索引对对象排序?,javascript,arrays,sorting,lodash,Javascript,Arrays,Sorting,Lodash,好的,那么给定这个输入(为了简洁起见,其他属性已被剥离): 我想按另一个数组的索引对它们进行排序,如果它们不在该数组中,请按字母顺序排序 var list = ['Jake', 'Michael', 'Liam']; 给我一个输出: Jake, Michael, Liam, Adam, Dave 我尝试过使用lo dash,但不太正确: names = _.sortBy(names, 'name'); names = _.sortBy(names, function(name) {
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
任何帮助都将不胜感激 你很接近<代码>返回(索引==-1)-指数:0代码>是问题所在 按照您的方法,它应该如下所示:
names = _.sortBy(names, 'name')
var listLength = list.length;
_.sortBy(names, function(name) {
var index = _.indexOf(list, name.name);
// If the name is not in `list`, put it at the end
// (`listLength` is greater than any index in the `list`).
// Otherwise, return the `index` so the order matches the list.
return (index === -1) ? listLength : index;
});
为什么
Adam
然后Dave
,您是如何排序的?我希望您知道javascript中有一个名为sort()的函数,它可以按字母顺序对数组排序!那么现在的问题是将元素移动到另一个数组中?list.sort();将输出亚当,戴夫,杰克,迈克尔,Liam@elclanrs-“如果它们不在该数组中,则按字母顺序排序”,因此,在其他术语中,整个数组按字母顺序排序,但如果这有意义,则这三个键将排在第一位。是的,我知道sort()
,尽管我已经在项目中使用了lodash,所以对我来说使用原生方法而不是(在我看来,更简洁的)lodash方法并不重要。效果很好。谢谢你的解释。:-)
names = _.sortBy(names, 'name')
var listLength = list.length;
_.sortBy(names, function(name) {
var index = _.indexOf(list, name.name);
// If the name is not in `list`, put it at the end
// (`listLength` is greater than any index in the `list`).
// Otherwise, return the `index` so the order matches the list.
return (index === -1) ? listLength : index;
});