Javascript-根据另一个数组对数组进行排序

是否可以对看起来像这样的数组进行排序和重新排列:

itemsArray = [ 

['Anne', 'a'],

['Bob', 'b'],

['Henry', 'b'],

['Andrew', 'd'],

['Jason', 'c'],

['Thomas', 'b']

]

匹配此数组的安排:

sortingArr = [ 'b', 'c', 'b', 'b', 'a', 'd' ]

不幸的是,我没有任何要跟踪的ID。我将需要优先处理items-array,以使其尽可能接近sortingArr。

更新:

这是我正在寻找的输出:

itemsArray = [    

['Bob', 'b'],

['Jason', 'c'],

['Henry', 'b'],

['Thomas', 'b']

['Anne', 'a'],

['Andrew', 'd'],

]

任何想法如何做到这一点?

回答:

就像是:

items = [ 

['Anne', 'a'],

['Bob', 'b'],

['Henry', 'b'],

['Andrew', 'd'],

['Jason', 'c'],

['Thomas', 'b']

]

sorting = [ 'b', 'c', 'b', 'b', 'c', 'd' ];

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]) /// Bob Jason Henry Thomas Andrew

})

这是一个较短的代码,但是会破坏sorting数组:

result = items.map(function(item) {

var n = sorting.indexOf(item[1]);

sorting[n] = '';

return [n, item]

}).sort().map(function(j) { return j[1] })

以上是 Javascript-根据另一个数组对数组进行排序 的全部内容, 来源链接: utcz.com/qa/432786.html

回到顶部