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