JavaScript中如何用map方法将对象数组的name属性拼接为逗号分隔字符串
错误原因分析
Object.values()接收的参数应为对象,你传入的p.name是字符串类型,JS会自动将字符串包装为String对象,Object.values()会返回该字符串所有单个字符组成的数组,例如Object.values('AAA')的执行结果为['A','A','A'],对该数组执行join(',')自然会得到A,A,A的结果。- 你将
join()方法写在了map的回调函数中,相当于对数组的每一个元素单独做字符拼接,而不是先提取所有name属性值再做整体拼接,逻辑执行顺序错误。
正确实现代码
直接提取每个对象的name属性,再对map返回的整体数组执行拼接即可:
var result = products.map(p => p.name).join(',');
执行逻辑拆解:
products.map(p => p.name)提取所有对象的name属性,返回结果为['AAA', 'BBB']- 对上述数组调用
join(','),最终得到目标结果'AAA,BBB'
可选优化
如果存在部分对象没有name属性的场景,可以新增一层过滤,避免拼接出undefined无效字符串:
var result = products.map(p => p.name).filter(Boolean).join(',');
内容的提问来源于stack exchange,提问作者UgoL
相关产品推荐
相关产品推荐

