JS如何根据另一个数组的排序对一个数组进行排序

当A被.sorted()时,它变成6,7,8,所以这些数字得到新的索引值,所以对B做同样的事情。获取B内部值的当前索引,然后根据A的新排列重新排列它。所以当A = 6,7,8时,B将为u,z,h


var arrA = [8, 6, 7] // B follows this arr (A)

var arrB = ['h', 'u', 'z'] // B follows A


arrA.sort()

// output: 6, 7, 8


// arrB.followA’s arrangement somehow 

// output: u, z, h



arrA.reverse()

// output: 8, 7, 6


// arrB.follow A’s arrangement

// output: h, z, u



console.log(arrA);

console.log(arrB)


狐的传说
浏览 220回答 4
4回答

白板的微信

创建一个二维工作数组,其元素是来自arrA和的值对arrB:var work = [];arrA.forEach(function( v, i ) {    work[ i ] = [ arrA[i], arrB[i] ];});现在您可以按任何顺序排列,并且来自和 的work值将保持同步:arrAarrBwork.sort(function(x, y) {    return Math.sign( x[0], y[0] );});(在上面的示例中,我们按槽 0 中的元素排序,该元素来自arrA。要按 中的元素排序arrB,请将 0 更改为 1。)现在你可以改变work,例如:work.reverse();并提取最初来自 的相应元素arrA:let newAarrA = work.map(function(x) {    return x[0]; // from arrA});console.log(newArrA);(将 0 更改为 1 以获取相应的元素arrB。)

幕布斯7119047

您可以使用“使用映射排序”技术,基本上使用一个临时数组,将arrB的元素映射到arrA元素的值,然后对其进行排序。var arrA = [8, 6, 7] // B follows this arr (A)var arrB = ['h', 'u', 'z'] // B follows Avar tmpMap = arrB.map((el, i) => ({ index: i, value: arrA[i] }));tmpMap.sort((a, b) => a.value - b.value);var arrB = tmpMap.map(el => arrB[el.index]);console.log(arrB);

长风秋雁

使用暴力排序例程。交换“ary”中的元素,如果这些元素交换,则交换“bry”中的相同索引。这样索引交换将相互镜像。var ary = [8, 7, 4, 3, 5, 1, 6];var bry = ['u', 'z', 'y', 'a', 'b', 'f', 'r'];var i = 0;var j = 0;for (i = 0; i < ary.length-1; i++){&nbsp; &nbsp; for (j = 0; j < ary.length-1; j++){&nbsp; &nbsp; &nbsp; if (ary[j] > ary[j+1]){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let bigger = ary[j];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ary[j] = ary[j+1];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ary[j+1] = bigger;&nbsp; &nbsp; &nbsp;// make bry swap the same indexes as ary above&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bigger = bry[j];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bry[j] = bry[j+1];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bry[j+1] = bigger;&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}

一只萌萌小番薯

如果是两个不同的数组就不可能了。解决问题的简单方法是将第二个数组转换为对象。let b = {&nbsp; &nbsp; 8: 'H',&nbsp; &nbsp; 6: 'U',&nbsp; &nbsp; 7: 'Z'}arrB = arrA.map((val) => return b[val]);并使用该对象根据数组 A 的值获取数组 B 的值。如我错了请纠正我
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript