gpt4 book ai didi

JavaScript 字典反转

转载 作者:行者123 更新时间:2023-11-30 16:05:04 27 4
gpt4 key购买 nike

我有一个有 5 个键的字典 var langDict = {};

IT-PL
EN
DE-FR
ZH-CH
IT-ES

我希望DE-FR在第一位,EN在第二位,其他无所谓。

我正在考虑使用下面的递归方法来实现这一点,但没有得到预期的结果。

for (var key in langDict) {
if (Object.keys(langDict).length > 0) {
langDict = filterKeys(langDict);
}
}

function filterKeys(langDict) {
for (var key in langDict) {
var langDictFiltered = {};
if (key.indexOf("DE") > -1) {
langDictFiltered[key] = langDict[key];
delete langDict[key];
break;
}
if (key.indexOf("EN") > -1) {
langDictFiltered[key] = langDict[key];
delete langDict[key];
break;
}
}

return langDict;
}

最佳答案

对象没有特殊顺序,但您可以获取对象的所有键 ( Object.keys() ) 并使用自定义排序 Array#sort和排序顺序的哈希表。

稍后您可以使用带有排序键的数组进行填充。

var keys = ['IT - PL', 'EN', 'DE - FR', 'ZH - CH', 'IT - ES'];
keys.sort(function (a, b) {
function value(v) {
return { DE: 1, EN: 2 }[v.substring(0, 2)] || 10;
}
return value(a) - value(b);
});

document.write('<pre>' + JSON.stringify(keys, 0, 4) + '</pre>');

编辑

拆分字符串并首先获取最高值的版本。​​

var keys = ['IT-PL', 'EN', 'DE-FR', 'ZH-CH', 'IT-ES', 'EN-DE-FR-CH-PL'];
keys.sort(function (a, b) {
function value(v) {
return v.split('-').reduce(function (r, a) {
return Math.min(r, { DE: 1, EN: 2 }[a] || 10);
}, 10);
}
return value(a) - value(b);
});

document.write('<pre>' + JSON.stringify(keys, 0, 4) + '</pre>');

关于JavaScript 字典反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37160999/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com