如何遍历JavaScript字典数据并生成指定格式的run调用代码?
问题解决:将字典键值对转换为单独的run函数调用
问题背景
现有一个JavaScript字典:
const items = { 34: ["a", "t"], 43: ["d", "u"], };
需要把它转换成每个键值对元素单独调用run函数的格式,预期输出:
run({34: "a"}), run({34: "t"}), run({43: "d"}), run({43: "u"}),
你之前尝试的[{ [Object.keys(items)[0]]: items[Object.keys(items)[0]] }]只能拿到第一个键的整个数组值,没法拆分单个元素,所以不符合预期。
解决方案
1. 生成目标格式的代码字符串
如果需要输出像示例那样的代码文本,可以用以下代码:
const items = { 34: ["a", "t"], 43: ["d", "u"], }; const runCalls = Object.entries(items) .flatMap(([key, values]) => { const numKey = Number(key); // 把字符串键转回数字类型 return values.map(val => `run({${numKey}: "${val}"})`); }) .join(',\n'); console.log(runCalls);
运行后会在控制台输出你想要的格式。
2. 直接执行所有run函数调用
如果不需要生成字符串,而是直接执行这些run调用,用这段代码:
const items = { 34: ["a", "t"], 43: ["d", "u"], }; Object.entries(items).forEach(([key, values]) => { const numKey = Number(key); values.forEach(val => { run({ [numKey]: val }); }); });
这段代码会遍历每个键对应的数组元素,逐个调用run函数。
代码说明
Object.entries(items):把字典转换成[键, 值数组]的格式,方便遍历所有键值对flatMap:先遍历每个键值对,再拆分值数组的元素,最终得到一个扁平化的调用字符串数组(或执行队列)map:为每个元素生成对应的run调用格式(或直接执行调用)
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

