我正在尝试使用reduce方法将对象数组转换为对象。问题是我想用数字来表示对象键。
let crops = [{
id: 1,
name: "wheat"
}, {
id: 2,
name: "rice"
}];
let cropsObj = crops.reduce((accumulator, currentValue) => {
accumulator[currentValue.id] = currentValue.name
return accumulator;
}, {});
console.log(cropsObj);
除了我得到的键是字符串之外,这工作正常。例如:
{"1":"wheat","2":"rice"}
我想要的是{1:"wheat",2:"rice"}
。如何将密钥转换为整数?
答案 0 :(得分:2)
为了说明@MarkMeyer的评论:
键只能是javascript对象中的字符串(或符号)。
console.log({3: 4, '3': 5});
答案 1 :(得分:1)
let obj = {
key: 4,
123: 'one two three',
1: 'one'
};
console.log(obj.key);
//console.log(obj.1); error
console.log(obj["1"]);
console.log(obj["123"]);
console.log(obj[1]);
console.log(obj[123]);
这是不可能的,因为任何JavaScript对象中的键都是JavaScript identifier
或string
。
答案 2 :(得分:1)
出于您的目的(使用材料表),您当前的对象可以正常工作。 {1:"wheat"}
实际上与{"1":"wheat"}
相同。
Unquoted property names / object keys in JavaScript对原因进行了非常详细的说明。简而言之,可以使用数字属性名称,但会将它们强制转换为字符串。