function numObj(s){
var emptyObj = {};
s.forEach(function(num) {
emptyObj[num] = String.fromCharCode(num);
});
return emptyObj;
}
console.log(numObj([118,117,120]));
我正在编写这个函数来将 int 转换为字母表中相应的 char。然而,
我期待输出 {'118': 'v', '117': 'u', '120': 'x' }
,但是当我运行代码时,我得到: { '117': 'u', '118': 'v', '120': 'x' }
.有谁有任何解释为什么该函数会改变输入的顺序?
最佳答案
参见Does JavaScript Guarantee Object Property Order? , Nailing object property order
使用Map()
function numObj(s){
let emptyObj = new Map();
s.forEach(function(num) {
emptyObj.set(num, {[num]:String.fromCharCode(num)});
});
return emptyObj;
}
let obj = numObj([118,117,120]);
for (let [key, value] of obj.entries()) {
console.log(key, value)
}
或Array()
来存储对象
function numObj(s){
let emptyObj = Array.from({length:s.length});
s.forEach(function(num, i) {
emptyObj[i] = {[num]:String.fromCharCode(num)};
});
return emptyObj;
}
let obj = numObj([118,117,120]);
for (let [key, value] of obj.entries()) {
console.log(key, value)
}
关于javascript - 将数字转换为对应的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40498556/