使用map将字符串转为对象数组却返回undefined,求问题排查
问题原因与解决方法
你遇到的问题是箭头函数的语法解析问题:当你写x=>{value:x}时,JavaScript会把{}识别为函数体的包裹符号,而非对象字面量。由于函数体里没有显式的return语句,每个map迭代都会默认返回undefined。
解决方式
方式1:用圆括号包裹对象字面量
将对象放在圆括号内,让JS明确这是要返回的对象,而非函数体:
const sample = '003020600900305001001806400008102900700000008006708200002609500800203009005010300' function solve(puzzle) { puzzle = puzzle.split('').map(x=>({value:x})) console.log(puzzle) } solve(sample)
方式2:显式添加return语句
如果保留大括号作为函数体,需要明确写出return来返回目标对象:
const sample = '003020600900305001001806400008102900700000008006708200002609500800203009005010300' function solve(puzzle) { puzzle = puzzle.split('').map(x=>{ return {value:x} }) console.log(puzzle) } solve(sample)
两种方式都能让map正确生成包含value属性的对象数组,而非全为undefined的数组。
内容的提问来源于stack exchange,提问作者eleethesontai
相关产品推荐
相关产品推荐

