如何在完全没有concat的情况下处理每个数据,然后是动态的?Javascript,映射
我需要动态显示结果。问题是,我只是在对象的第一个和第二个元素处进行连接,我必须通过一些循环或动态地进行连接 代码如下: 在stackblitz中,您将看到问题被写入如何在完全没有concat的情况下处理每个数据,然后是动态的?Javascript,映射,javascript,typescript,Javascript,Typescript,我需要动态显示结果。问题是,我只是在对象的第一个和第二个元素处进行连接,我必须通过一些循环或动态地进行连接 代码如下: 在stackblitz中,您将看到问题被写入 this.allFilters.map(filerVal => { if (Array.isArray(filerVal.value)) filerVal.value = `${filerVal.value[0]?.value} : ${(filerVal.value[1]?.value ?
this.allFilters.map(filerVal => {
if (Array.isArray(filerVal.value))
filerVal.value = `${filerVal.value[0]?.value} : ${(filerVal.value[1]?.value ? filerVal.value[1]?.value : '')}`
return filerVal;
});
这是一个问题:
filerVal.value = `${filerVal.value[0]?.value} : ${(filerVal.value[1]?.value ? filerVal.value[1]?.value : '')}`
我是concat字符串的第一个和第二个元素,但在我的数组中有四个元素。。。如何显示所有数据
预期结果将是:
1:2:3:4
十五
1:2:3:4
现在是:
1:2(缺少3和4)
十五
1:2(缺少3和4)
试试这个:
recieveMessage(data) {
this.allFilters.push(Array.isArray(data.value) ?
data.value.map(obj => obj.value).join(":")
: data.value)
}
及
我知道这就是你期望的结果
Forked Stackblitz:
.map()
用于转换数组中的每个项目。因此,它必须始终返回一个值。如果您对转换数组中的每个项不感兴趣,请不要使用.map()
。您可能需要.forEach()
,或者更好的是,当我使用forEach时,为循环使用(更好,因为它可以被中断),它也会这样做。对我来说,重要的是如何格式化我合并的字符串,它需要一个循环还是什么?主要问题是您正在用这一行覆盖filterVale.value
,filerVal.value=${filerVal.value[0]?.value}:${(filerVal.value[1]?.value?filerVal.value[1]?.value
在第一次传递中,filerVal.value
不再是一个项目数组,变成了'1:2'
然后filerVal.value.value
就不存在了。@MichaelHoobler是的,这是真的。如何修复它?我想他们需要空格:“,对吗?这没关系,但对我来说这是不同的…我在我的this.allfilters中有两个对象…我不知道如何。Stackblitz只是演示外观,但在我的代码中这工作不同…不知道如何?我已经分叉了你的Stackblitz,并在我的回答中添加了指向它的链接Stackblitz是相同的。在我的代码中,我有两个对象,像一个0:{name:“一”,值:2}1:2秒的对象是1:2Ah是的对不起,我把你的Stackblitz分叉了,但它没有保留我的更改。我已经更新了它,看一看
<span *ngFor="let filter of allFilters">
{{ filter }}
</span>
1:2:3
15
1:2:3:4