繁体   English   中英

javascript jquery 对关联数字数组进行升序排序并保留重复项

[英]javascript jquery sort ascociative numeric array ascending order and keep duplicates

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

这是一个键盘键码数组:

我的代码如下:

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);

没有正常工作。

我解决了它:object 键仅采用唯一索引,这意味着如果您有 4 个索引,每个索引名为“51” Object.keys 仅返回一个名为“51”的键。 出于这个原因,我无法达到我想要的结果。

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

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

})

我切换到 jQuery 并改用此方法:

$.each( keyCodes, function( key, value ) { 
/* do what ever */
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM