Javascript 如何对树节点进行排序,如0-0-0

Javascript 如何对树节点进行排序,如0-0-0,javascript,tree,lodash,Javascript,Tree,Lodash,我尝试(按lodash orderBy)对描述树的数组进行排序,如下所示: const users = [ { name: '10', pos: '0-0-0' }, { name: '20', pos: '0-0-1' }, { name: '21', pos: '0-0-1-1' }, { name: '40', pos: '0-0-11' }, { name: '30', pos: '0-0-6' } ]; const sortedUsers = _.orderBy(

我尝试(按lodash orderBy)对描述树的数组进行排序,如下所示:

const users = [
  { name: '10', pos: '0-0-0' },
  { name: '20', pos: '0-0-1' },
  { name: '21', pos: '0-0-1-1' },
  { name: '40', pos: '0-0-11' },
  { name: '30', pos: '0-0-6' }
];

const sortedUsers = _.orderBy(users, [user => parseInt(user.pos.split("-").join("0"))], ['asc']);
console.log(sortedUsers);
这不是一个好方法,因为我得到了订单:

'0-0-0', '0-0-1', '0-0-6', '0-0-11', '0-0-1-1'
但预期:

'0-0-0', '0-0-1', '0-0-1-1, '0-0-6', '0-0-11''
如何正确排序此数组? 谢谢

您可以选择并使用选项对字符串的同一列进行排序

const users=[{name:'10',pos:'0-0-0'},{name:'20',pos:'0-0-1'},{name:'21',pos:'0-0-1-1'},{name:'40',pos:'0-0-11'},{name:'30',pos 0-0-6'}];
sort((a,b)=>a.pos.localeCompare(b.pos,未定义,{numeric:true,sensitivity:'base'}));
console.log(用户)
。作为控制台包装{最大高度:100%!重要;顶部:0;}