Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用javascript中的另一个对象数组对对象数组进行排序_Javascript_Arrays_Sorting_Object - Fatal编程技术网

用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希望您能这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您已尝试过的内容,以便说明您在某个问题中遇到的具体问题。有关更多信息,请参阅并使用。