【发布时间】:2020-05-21 18:41:23
【问题描述】:
我有一个数字键 => 缺少键的值数组。我想保持数组原样,但按升序排序,并保留重复键。
这是一个键盘键码数组:
我的代码如下:
var keyCodes = {
"192" : "~",
"49" : "!",
"50" : "@",
"51" : "#",
"52" : "$",
"53" : "%",
"54" : "^",
"55" : "&",
"56" : "*",
"57" : "(",
"48" : ")",
"173" : "_",
"61" : "+",
"219" : "{",
"221" : "}",
"220" : "|",
"59" : ":",
"222" : "\"",
"188" : "<",
"190" : ">",
"191" : "?",
"192" : "`",
"219" : "[",
"221" : "]",
"59" : ";",
"222" : "'",
"220" : "\\",
"188" : ",",
"190" : ".",
"191" : "/",
"49" : "1",
"50" : "2",
"51" : "33",
"51" : "34",
"51" : "35",
"51" : "3",
"52" : "4",
"53" : "5",
"54" : "6",
"55" : "7",
"39" : "ArrowRight"
};
这是数组的一部分:这里有 4 x 51 键值对。我希望当数组排序时我得到.....“49”:“1”,“51”:“3”,“51”:“33”,“51”:“34”,“51” " : "35", ......
我几乎尝试了所有方法,我尝试的最后一件事是:
function checkKeys(arr, key){
for(var i = 0; i < arr.length; i++){
if(arr[i] == key)
return 1;
}
return 0;
}
$inArr = [];
$inArrd = [];
$newCodes = {};
Object.keys(keyCodes).forEach(function (key) {
var keysC = checkKeys($inArr, key);
if(keysC === 1){
/*tried creating an array of duplicates and then later remove or change them in the main array manually*/
$inArrd.push(key);
return;
}
$inArr.push(key);
$newCodes[key] = keyCodes[key];
return;
});
console.log($inArrd);
没有正常工作。
【问题讨论】:
标签: javascript arrays sorting duplicates numeric