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