Javascript 使用数组数组对键值对对象数组进行排序
我试图使用第二个数组的索引对键值对对象数组进行排序 考虑以下代码:Javascript 使用数组数组对键值对对象数组进行排序,javascript,arrays,sorting,object,key-value,Javascript,Arrays,Sorting,Object,Key Value,我试图使用第二个数组的索引对键值对对象数组进行排序 考虑以下代码: const sheet=[['ES']、['MES']、['NQ']、['MNQ']]//按此顺序排序 const quotes=[{root:'MNQ'},{root:'MES'},{root:'ES'},{root:'NQ'}]//对这些对象进行排序 const sorted=quotes.sort((a,b)=>{ 返回表.indexOf(a.root)-表.indexOf(b.root) }) console.log(
const sheet=[['ES']、['MES']、['NQ']、['MNQ']]//按此顺序排序
const quotes=[{root:'MNQ'},{root:'MES'},{root:'ES'},{root:'NQ'}]//对这些对象进行排序
const sorted=quotes.sort((a,b)=>{
返回表.indexOf(a.root)-表.indexOf(b.root)
})
console.log(已排序)
工作表
是一个数组数组,因此sheet.indexOf
除了从工作表
中获取的数组之外,任何内容都将返回-1
首先将工作表
转换为字符串数组:
const sheet=[['ES']、['MES']、['NQ']、['MNQ']]
.map(([str])=>str);
const quotes=[{root:'MNQ'},{root:'MES'},{root:'ES'},{root:'NQ'}]//对这些对象进行排序
const sorted=quotes.sort((a,b)=>{
返回表.indexOf(a.root)-表.indexOf(b.root)
})
console.log(已排序)
工作表
是一个数组数组,因此sheet.indexOf
除了从工作表
中获取的数组之外,任何内容都将返回-1
首先将工作表
转换为字符串数组:
const sheet=[['ES']、['MES']、['NQ']、['MNQ']]
.map(([str])=>str);
const quotes=[{root:'MNQ'},{root:'MES'},{root:'ES'},{root:'NQ'}]//对这些对象进行排序
const sorted=quotes.sort((a,b)=>{
返回表.indexOf(a.root)-表.indexOf(b.root)
})
console.log(排序)
您不能使用indexOf
,因为sheet
是数组的数组。尝试使用findIndex()
并比较唯一的数组元素:
const sheet=[['ES']、['MES']、['NQ']、['MNQ']]//按此顺序排序
const quotes=[{root:'MNQ'},{root:'MES'},{root:'ES'},{root:'NQ'}]//对这些对象进行排序
让排序=引号。排序((a,b)=>{
返回sheet.findIndex(([x])=>x==a.root)-sheet.findIndex(([x])=>x==b.root);
})
控制台日志(已排序)
您不能使用indexOf
,因为sheet
是一个数组数组。尝试使用findIndex()
并比较唯一的数组元素:
const sheet=[['ES']、['MES']、['NQ']、['MNQ']]//按此顺序排序
const quotes=[{root:'MNQ'},{root:'MES'},{root:'ES'},{root:'NQ'}]//对这些对象进行排序
让排序=引号。排序((a,b)=>{
返回sheet.findIndex(([x])=>x==a.root)-sheet.findIndex(([x])=>x==b.root);
})
控制台日志(已排序)
如果引号
数组具有唯一的{root}
对象,则可以使用稍微不同的方法(对于较大的数组,这应该比使用.sort()
更有效),将引号
数组和表
数组中的{root}
对象进行排序,如下:
const sheet=[['ES']、['MES']、['NQ']、['MNQ'];
const quotes=[{root:'MNQ'},{root:'MES'},{root:'ES'},{root:'NQ'}]//对这些对象进行排序
constlut=newmap(quotes.Map({root})=>[root,{root}]);
常量排序=sheet.map([s])=>lut.get(s));
console.log(sorted)
如果引号
数组具有唯一的{root}
对象,则可以使用稍微不同的方法(这应该比使用.sort()
更有效),即从引号
数组,然后从表
数组{root}
这样的对象:
const sheet=[['ES']、['MES']、['NQ']、['MNQ'];
const quotes=[{root:'MNQ'},{root:'MES'},{root:'ES'},{root:'NQ'}]//对这些对象进行排序
constlut=newmap(quotes.Map({root})=>[root,{root}]);
常量排序=sheet.map([s])=>lut.get(s));
console.log(已排序)
Bingo!非常感谢@CertainPerformance。15分钟的时间一过,我就接受你的回答!非常感谢@CertainPerformance。15分钟的时间一到,我就接受你的回答over@CertainPerformance,你能解释一下编辑的原因吗,这样我就不会再犯同样的错误了?看,这不是什么大问题,但堆栈溢出是一个参考站点,而不是一个讨论论坛,所以“谢谢”等只是噪音(当我们看到它们时,我们应该把它们从帖子中删除)注意到,并且从现在起不再那么“闲聊”on@CertainPerformance,你能解释一下编辑的原因吗,这样我就不会再犯同样的错误了?看-这不是什么大问题,但堆栈溢出是一个参考网站,而不是一个讨论论坛,所以“谢谢”etc只是一种噪音(当我们看到它们时,我们应该把它们从帖子中删除),从现在起,它将不再那么“健谈”