Javascript 按第二个数组的顺序排序第一个数组

Javascript 按第二个数组的顺序排序第一个数组,javascript,sorting,underscore.js,Javascript,Sorting,Underscore.js,假设我有两个数组,即名称数组和名称,如下所示 var namesArray = [{"name":"Charlie","age":3},{"name":"Dog","age":1},{"name":"Baker","age":7},{"name":"Abel","age":9}]; var names = ['Baker', 'Dog', 'Abel', 'Charlie']; 我可以在下划线js中实现以下功能,以便按顺序对名为namesArray的数组进行排序,以便namesArray的

假设我有两个数组,即名称数组名称,如下所示

var namesArray = [{"name":"Charlie","age":3},{"name":"Dog","age":1},{"name":"Baker","age":7},{"name":"Abel","age":9}];

var names = ['Baker', 'Dog', 'Abel', 'Charlie']; 

我可以在下划线js中实现以下功能,以便按顺序对名为namesArray的数组进行排序,以便namesArray的所有name元素的顺序与names

相同。在纯Javascript中,您可以使用对象作为排序顺序的参考

var namesArray=[{“name”:“Charlie”,“age”:3},{“name”:“Dog”,“age”:1},{“name”:“Baker”,“age”:7},{“name”:“Abel”,“age”:9}],
姓名=[“贝克”、“狗”、“亚伯”、“查理”],
hash=Object.create(null);
名称.forEach(函数(a,i){
散列[a]=i+1;
});
namesArray.sort(函数(a,b){
return(散列[a.name]| | 0)-(散列[b.name]| | 0);
});

log(名称数组)
sort()
中查找每个名称的索引。性能不如创建索引散列,但可能也没有那么关键

namesArray.sort(function(a,b){
  return names.indexOf(a.name) - names.indexOf(b.name);
});

underscrore没有太多的用途,但你可以这样做: 我认为在性能方面,使用hash-like比indexOf更好

var namesArray=[{“name”:“Charlie”,“age”:3},{“name”:“Dog”,“age”:1},{“name”:“Baker”,“age”:7},{“name”:“Abel”,“age”:9}];
变量名称=['Baker'、'Dog'、'Abel'、'Charlie'];
var sorted=uu.sortBy(namesArray,o=>names.indexOf(o.name));
控制台日志(已排序)

你试过什么了吗?我们能看到一些代码表明,您至少已经尝试过了吗?这与下划线无关,只是简单的编码技巧和简单的javascript