每当我添加或删除数组中的元素时,我需要通过为每个项目放置-
来将数组中的元素转换为字符串。这是我的实现方式:
onSelect(event: MatOptionSelectionChange, service: string) {
let serviceList: string;
if(event.source.selected) {
this.servicesToToggle.push(service);
} else {
this.servicesToToggle = this.servicesToToggle.filter(item => item !== service);
}
this.servicesToToggle.forEach(element => {
if(element === undefined) {
return;
}
serviceList += '-' + element;
});
console.log(serviceList);
}
问题是undefined
被包含在每个字符串的开头。像这样:
undefined-Hardware Service
undefined-Hardware Service-RFID Service
undefined-Hardware Service
undefined-Hardware Service-RFID Service
undefined-Hardware Service-RFID Service-QR Service
undefined-Hardware Service-RFID Service
undefined-RFID Service undefined
您能帮我吗?
答案 0 :(得分:5)
发生这种情况是因为您没有初始化library(tidyverse)
library(gridExtra)
l <- split(mtcars, mtcars$cyl) # divide based on cyl in a list
plots <- lapply(l, function(x) {
ggplot(x, aes(x=mpg, y=hp)) +
geom_point(color = "blue") +
facet_wrap(.~carb)
}) # call lapply() on each element
do.call(grid.arrange, plots)
变量。
已声明但未初始化的变量具有serviceList
值。
undefined
如果在var x;
console.log(x); // undefined
和字符串之间使用+
运算符,则undefined
将被强制为字符串undefined
:
"undefined"
要解决此问题,请将var x;
console.log(x + 'foo'); // undefinedfoo
初始化为空字符串:
serviceList
我也回答了您的评论问题。
有很多方法可以连接字符串列表,我最喜欢的是使用let serviceList: string = '';
:
.join
在您的情况下,它将是:
var concatenated = ['list', 'of', 'elements'].join(' - ');
console.log(concatenated);
如果您愿意的话,另一种解决方案是检查索引,如果serviceList = this.servicesToToggle.join('-');
,我们不放-
:
index === 0