JS遍历数组判断value是否为数组并将内部元素拼接为字符串
问题排查
你现有代码存在以下问题:
filter方法用于筛选符合条件的数组元素,无法实现逐个修改元素属性的需求,该场景应该使用map(生成新数组,无副作用,推荐)或forEach(直接修改原数组)- 判断值是否为数组需要使用
Array.isArray()方法,你写的includes(Array())是判断数组中是否包含一个新的空数组实例,无法实现类型检测效果 - 你直接对过滤后的数组整体调用
join,只会把整个数组的元素转为字符串拼接,不会修改每个元素内部的value属性
实现代码
方案1:生成新数组(推荐,不修改原数组)
const processedArray = this.array.map(item => { if (Array.isArray(item.value)) { return { ...item, value: item.value.join('++') } } return item })
方案2:直接修改原数组
this.array.forEach(item => { if (Array.isArray(item.value)) { item.value = item.value.join('++') } })
效果验证
你提供的初始数组示例中value: [{true,false}]存在多余大括号的语法错误,修正为value: [true,false]后运行上述代码,得到的结果完全符合预期:
[{id: 1, value: "true++false"},{id: 2, value: "foo"}]
内容的提问来源于stack exchange,提问作者mitchiri_neko
相关产品推荐
相关产品推荐

