我有两个包含对象的数组.一个包含某些顺序的键,另一个包含数据,我需要按照给定的排序键数组对数据数组进行排序.我怎样才能做到这一点?
var a = ['d','a','b','c'] ;
var b = [{a:1},{c:3},{d:4},{b:2}];
Run Code Online (Sandbox Code Playgroud)
结果应该是:
result = [{d:4},{a:1},{b:2},{c:3]
Run Code Online (Sandbox Code Playgroud)
试试这个
var a = ['d','a','b','c'] ;
var b = [{a:1},{c:3},{d:4},{b:2}];
b.sort(function(x,y){
var xkey = a.indexOf(Object.keys(x)[0]);
var ykey = a.indexOf(Object.keys(y)[0]);
return xkey - ykey;
})
document.body.innerHTML += JSON.stringify(b,0,4);
Run Code Online (Sandbox Code Playgroud)
与上述方法不同的方法是使用Lodash
Javascript 库。
var a = ['d','a','b','c'] ;
var b = [{a:1},{c:3},{d:4},{b:2}];
var results = _.map(a,function(av) {
var obj = {};
obj[av] = _.find(b, av)[av];
return obj
});
document.body.innerHTML += JSON.stringify(results);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/lodash/4.11.1/lodash.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1222 次 |
最近记录: |