javascript jquery升序排序,保留重复的数字数组。

问题描述 投票:0回答:1

我有一个数字键 => 值数组,但缺少键。我想保持数组的原样,但按升序排序,并保留重复的键。

这是一个键盘键码数组。

我的代码如下:

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×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
1个回答
0
投票

我解决了:对象键只取唯一的索引,这意味着如果你有4个索引,每个都叫 "51",Object.keys只返回一个叫 "51 "的键,由于这个原因,我不能达到我想要的结果。

*除非你想使用唯一的键,否则不要使用*。

Object.keys(keyCodes).forEach(function (key) {

})

我改用jQuery,用这个方法代替。

$.each( keyCodes, function( key, value ) { 
/* do what ever */
})
© www.soinside.com 2019 - 2024. All rights reserved.