javascript - 按照 JavaScript 中给定另一个数组属性的顺序排列数组

标签 javascript angular es6-modules

我这里有 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/

相关文章:

javascript - 如何在 Angular4 中实现 ngFor 回调?

javascript - 在 angular2 中导出 xlsx 文件( typescript )

javascript - 有没有办法更新 gon (ror gem) 变量

javascript - Angular - FormArray,如何重置 formArray 的特定字段?

javascript - SEO 和即时过滤

typescript - Jest (ESM) 在单元测试中从 React Native 加载文件时出现问题

javascript - 无法从委托(delegate)函数访问类属性

javascript - 我应该避免在模块中使用顶级变量吗?

javascript - Node.js:一次接收太多 UDP 消息,丢失它们

javascript - getJSON在chrome上本地加载json数据文件时出错