我想根据javascript中的另一个数组对数组进行排序?

我想根据javascript中的另一个数组对数组进行排序?,javascript,arrays,sorting,Javascript,Arrays,Sorting,我的朋友为我写了这段代码,但不幸的是,我不能完全理解这段代码,我知道push、filter和forEach方法做了什么,但我不能理解函数中发生了什么,所以我正在寻找函数的简要说明。谢谢你 items = [ ['Anne', '1'], ['Bob', '2'], ['Henry', '3'], ['Andrew', '4'], ['Jason', '5'], ['Thomas', '6'] ] sorting = [ '1', '2', '3

我的朋友为我写了这段代码,但不幸的是,我不能完全理解这段代码,我知道push、filter和forEach方法做了什么,但我不能理解函数中发生了什么,所以我正在寻找函数的简要说明。谢谢你

items = [ 
    ['Anne', '1'],
    ['Bob', '2'],
    ['Henry', '3'],
    ['Andrew', '4'],
    ['Jason', '5'],
    ['Thomas', '6']
]

sorting = [ '1', '2', '3', '4', '5', '6' ];
result = []
sorting.forEach(function(key) {
    var found = false;
    items = items.filter(function(item) {
        if(!found && item[1] == key) {
            result.push(item);
            found = true;
            return false;
        } else 
            return true;
    })
})

result.forEach(function(item) {
    document.writeln(item[0])
}) 

不必用奇怪的方法过滤给定数据的每个元素,您可以通过获取项目的索引并将增量作为排序值来进行直接排序

这种方法需要定义两个项目之间关系的delta

var项=[[Andrew'、[4']、[Bob'、[2']、[Anne'、[1']、[Henry'、[3']、[Jason'、[5']、[Thomas'、[6'],
排序=['1','2','3','4','5','6'];
items.sort((a,b)=>sorting.indexOf(a[1])-sorting.indexOf(b[1]);
控制台日志(项目)
.as-console-wrapper{max-height:100%!important;top:0;}
调用
filter()
将筛选出数组中编号与
键匹配的第一个元素。
found
变量用于在找到匹配项后停止筛选,数组的其余部分将原封不动地返回

在过滤过程中,它将该项推送到结果列表中

一种更直接的编写方法是:

sorting.forEach(函数(键){
var index=items.findIndex(item=>item[1]==key);
如果(索引!=-1){
结果推送(项目[索引]);
项目.拼接(索引,1);
}

})
您能否更具体地说明您不了解的内容。如果你理解了每一个函数,你就应该能够理解它们都在做什么。将结果写在一张纸上。这样它只能过滤掉第一个匹配项。
found
为假,直到找到第一个匹配项,然后变为真。实际上,这是一个非常糟糕的学习示例。。所以混淆这是一种非常混淆的方式。