[英]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.