我需要将其转换为:
int
进入
int maxi = Character.digit(String.valueOf(N).charAt(0), 10);
当我尝试将prev = {in_progress: 1, todo: 3, done: 1}
分配给变量时,它会被分配。
output = {[ ['Status', 'Count'], ['Todo', 3], ['In Progress', 1], ['Done', 1] ]}
成功。
但是当我尝试将prev
分配给变量时,它会引发错误
let a = {in_progress: 1, todo: 3, done: 1}
您能解释一下这背后的原因吗?
答案 0 :(得分:1)
问题在于{[ ['Status', 'Count'], ['Todo', 3], ['In Progress', 1], ['Done', 1] ]}
不是有效的对象文字。只是列表列表中的花括号。对象文字必须具有键:值对。
如果您想将其变成一个对象,它将看起来像{ 'Status': 'Count', 'Todo': 3, 'In Progress': 1, 'Done': 1 }
。
如果您已经有了列表列表,并希望通过编程将其变成对象,则可以使用reduce
:
// Note: no braces
let kvlist = [ ['Status', 'Count'], ['Todo', 3], ['In Progress', 1], ['Done', 1] ];
let obj = kvlist.reduce((h,[k,v]) => { h[k] = v; return h },{});
答案 1 :(得分:0)
您可以获取条目并使用该值映射格式化的密钥。
const format = s => s.split('_').map(([c, ...s]) => [c.toUpperCase(), ...s].join('')).join(' ');
var prev = { in_progress: 1, todo: 3, done: 1 },
result = [
['Status', 'Count'],
...Object.entries(prev).map(([k, v]) => [format(k), v])
];
console.log(result);