构造对象时,array.map运算符返回错误的键

时间:2019-04-11 01:47:41

标签: javascript node.js

我遇到需要重新排列对象的情况

我的obj->

{ '1': 2, '2': 1, '3': 2, '4': 1, '6': 1, '7': 2, '8': 4, '45': 1 }

我的数组->

[ '2', '4', '6', '45', '1', '3', '7', '8' ]

我尝试过的->

var rearrangedObj = sortedKeys.filter((ele, ind, arr) => {
   console.log(ele, r_obj[ele])

   var q = sortedKeys[ind];
   q = ele.toString();

   var a = { q: r_obj[ele] 
   console.log(a)
   return a;
})

我的结果是->

2 1
{ q: 1 }
4 1
{ q: 1 }
6 1
{ q: 1 }
45 1
{ q: 1 }
1 2
{ q: 2 }
3 2
{ q: 2 }
7 2
{ q: 2 }
8 4
{ q: 4 }

我期望的是->而不是q,密钥应该是控制台中打印的密钥

var a1 = new Array(1, 1, 2, 3, 3, 4, 45, 6, 7, 7, 8, 8, 8, 8);
var r_obj = {};
var a2 = a1.map((ele, ind) => 
    if (r_obj.hasOwnProperty(ele)){
        r_obj[ele] += 1
    } else {
        r_obj[ele] = 1
    }
    return ele;
})

console.log(r_obj)

var keys = Object.keys(r_obj)

sortedKeys = keys.sort(function(a, b){
    if (r_obj[a] > r_obj[b]){
        return 1
    }
    if (r_obj[a] < r_obj[b]){
        return -1
    }
    return 0;
});

var rearr = [];
var rearrangedObj = sortedKeys.filter((ele, ind, arr) => {
   console.log(ele, r_obj[ele])

   var q = sortedKeys[ind];
   q = ele.toString();

   var a = { q: r_obj[ele] }
   console.log(a)
   return a;
})

console.log(rearrangedObj, "sortedKeys")

我的结果是->

2 1
{ q: 1 }
4 1
{ q: 1 }
6 1
{ q: 1 }
45 1
{ q: 1 }
1 2
{ q: 2 }
3 2
{ q: 2 }
7 2
{ q: 2 }
8 4
{ q: 4 }

我期望的是->而不是q,密钥应该是控制台中打印的密钥

0 个答案:

没有答案