用javascript中的另一个对象数组对对象数组进行排序
如何按另一个对象数组对对象数组进行排序 这是我的代码:用javascript中的另一个对象数组对对象数组进行排序,javascript,arrays,sorting,object,Javascript,Arrays,Sorting,Object,如何按另一个对象数组对对象数组进行排序 这是我的代码: let arrayItem = [ { 'id': '#id1', 'name': 'one', 'bundle': 'bundle1' }, { 'id': '#id2', 'name': 'two', 'bundle': 'bundle2' }, { 'id': '#id3',
let arrayItem = [
{
'id': '#id1',
'name': 'one',
'bundle': 'bundle1'
},
{
'id': '#id2',
'name': 'two',
'bundle': 'bundle2'
},
{
'id': '#id3',
'name': 'three',
'bundle': 'bundle3'
}
]
这是用于订购的阵列:
let orderItem = [
{
'id': '#id3',
'name': 'three'
},
{
'id': '#id1',
'name': 'one',
},
{
'id': '#id2',
'name': 'two'
}
]
我需要以下数据:
let resultItem = [
{
'id': '#id3',
'name': 'three',
'bundle': 'bundle3'
},
{
'id': '#id1',
'name': 'one',
'bundle': 'bundle1'
},
{
'id': '#id2',
'name': 'two',
'bundle': 'bundle2'
}
]
我想按多个键按另一个对象数组对对象数组进行排序
谢谢因为您的
orderArray
中有对象数组,您首先需要找到该order对象的索引,然后获得索引的差值
,以便对原始数组进行排序:
let arrayItem=[
{
“id”:“id1”,
“名称”:“一”,
“bundle”:“bundle1”
},
{
“id”:“id2”,
'姓名':'两个',
“bundle”:“bundle2”
},
{
“id”:“id3”,
'姓名':'三',
“bundle”:“bundle3”
}
];
让orderItem=[
{
“id”:“id3”,
“姓名”:“三”
},
{
“id”:“id1”,
“名称”:“一”,
},
{
“id”:“id2”,
“姓名”:“两个”
}
];
arrayItem.sort(函数(a,b){
var aIndex=orderItem.findIndex(({id,name})=>a.id==id&&a.name==name);
var bIndex=orderItem.findIndex(({id,name})=>b.id==id&&b.name==name);
返回aIndex-bIndex;
});
console.log(arrayItem)代码>您可以按照@Ankit Agarwal的建议使用排序
或者,您可以使用下面的简单行让它为您工作。这样就行了
var orderedItem = orderItem.map(orderObj =>
arrayItem.find(actualObj => actualObj.id === orderObj.id))
我只是在你的订单项上运行map
,查找
在阵列项目上对应的对象,然后返回
对象从您的arrayItem中删除
希望对您有所帮助。您可以使用a来存储索引/顺序,然后使用索引的增量对数组进行排序
var arrayItem=[{id:'#id1',name:'one',bundle:'bundle1'},{id:'#id2',name:'two',bundle:'bundle2'},{id:'#id3',name:'three',bundle:'bundle3'},
orderItem=[{id:'#id3',name:'三'},{id:'#id1',name:'一',},{id:'#id2',name:'两'}],
order=newmap(orderItem.Map(({id},i)=>[id,i]);
arrayItem.sort((a,b)=>order.get(a.id)-order.get(b.id));
console.log(arrayItem)代码>发布的问题似乎根本不包含解决问题的方法。StackOverflow希望您能这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您已尝试过的内容,以便说明您在某个问题中遇到的具体问题。有关更多信息,请参阅并使用。