我这里有 2 个数组
第一个数组是主要数据, 根据属性,第二个数组必须是第一个数组数据顺序的基础。
第二个数组示例:
var order_basis = [
{ tag:'vip' }, { tag:'home' } { tag:'work' }
]
第一个数组数据
var main_data = [
{ tag:'work',name:'sample',contact:'0987654',email:'sample@email.com' },
{ tag:'home',name:'sample',contact:'0987654',email:'sample@email.com' },
{ tag:'home',name:'sample',contact:'0987654',email:'sample@email.com' },
{ tag:'work',name:'sample',contact:'0987654',email:'sample@email.com' },
{ tag:'vip',name:'sample',contact:'0987654',email:'sample@email.com' },
]
预期输出为
基于第二个数组标签顺序,它必须是..
ReOrder( main_data ,order_basis ){
//main code
return
}
结果是
tag:'vip' name:'sample' contact:'0987654' email:'sample@email.com'
tag:'home' name:'sample' contact:'0987654' email:'sample@email.com'
tag:'home' name:'sample' contact:'0987654' email:'sample@email.com'
tag:'work' name:'sample' contact:'0987654' email:'sample@email.com'
tag:'work' name:'sample' contact:'0987654' email:'sample@email.com'
谢谢大佬帮忙! ..
最佳答案
您可以通过使用具有此数据的对象来获取 order_basis
assortorder 的标签索引。
var order_basis = [{ tag: 'vip' }, { tag: 'home' }, { tag: 'work' }],
main_data = [{ tag: 'work', name: 'sample', contact: '0987654', email: 'sample@email.com' }, { tag: 'home', name: 'sample', contact: '0987654', email: 'sample@email.com' }, { tag: 'home', name: 'sample', contact: '0987654', email: 'sample@email.com' }, { tag: 'work', name: 'sample', contact: '0987654', email: 'sample@email.com' }, { tag: 'vip', name: 'sample', contact: '0987654', email: 'sample@email.com' }],
order = {};
order_basis.forEach(function (o, i) { order[o.tag] = i + 1 });
main_data.sort(function (a, b) {
return order[a.tag] - order[b.tag];
});
console.log(main_data);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 按照 JavaScript 中给定另一个数组属性的顺序排列数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46835892/