【发布时间】:2017-12-28 04:25:34
【问题描述】:
我有两个数组,根据元素在数组中的位置,它会接收一个值。两个数组都包含相同的元素,但位置不同。我想计算每个元素的值,将数组合并为一个数组,并对新数组进行排序。
我能想到的唯一想法是将我的初始数组转换为对象数组,合并它们,按对象值排序,然后将该顺序映射到一个新数组中。
var ranks = [],
objArray1 = [],
objArray2 = [];
// 'aaa' = 5, 'bbb' = 4, 'ddd' = 3, 'eee' = 2, 'ccc' = 1
var array1 = ['aaa', 'bbb', 'ddd', 'eee', 'ccc'];
// 'ddd' = 5, 'ccc' = 4, 'aaa' = 3, 'bbb' = 2, 'eee' = 1
var array2 = ['ddd', 'ccc', 'aaa', 'bbb', 'eee'];
for (var i = 0, x = 5; i < 5; x--, i++) {
var obj = {};
obj[array1[i]] = x;
objArray1.push(obj);
}
for (var i = 0, x = 5; i < 5; x--, i++) {
var obj = {};
obj[array2[i]] = x;
objArray2.push(obj);
}
// combine both object arrays, match keys, but add values
// should output ranks =[{aaa: 8}, {bbb: 6}, {ccc: 5}, {ddd: 8}, {eee: 3}]
// then sort based on value
// should output ranks = [{aaa: 8}, {ddd: 8}, {bbb: 6}, {ccc: 5}, {eee: 3}]
// then copy keys over to new array while keeping position
// should output var final = ['aaa', 'ddd', 'bbb', 'ccc', 'eee']
【问题讨论】:
-
这看起来像是作业/面试问题?
-
您只想按两个数组的总和对元素进行排序?
-
预期结果是什么?
标签: javascript arrays sorting