用数组创建字符串,如何防止打印“ undefined”?

时间:2019-02-04 22:02:35

标签: javascript

晚上好,我试图创建一个由数组中多个值组成的字符串。
这是一个例子:

textArray = []
var wordOne = "Hello";
var wordTwo = "World";

if (wordOne != "foo"){
  textArray.push(wordOne);
}

console.println(textArray[0] + ", " + textArray[1]);
\\It would print out "Hello, undefined"\\
\\ I use 'console.println' since I'm working on Adobe software\\

基本上,有时有时没有将值添加到我的数组中,但是我仍然希望能够打印出来而不会出现“未定义”的情况。有什么办法可以解决这个问题?

5 个答案:

答案 0 :(得分:2)

只需使用加入

textArray = []
var wordOne = "Hello";
var wordTwo = "World";

if (wordOne != "foo"){
  textArray.push(wordOne);
}

console.log(textArray.join(', '));

答案 1 :(得分:1)

只需使用一种著名的迭代方法对数组进行迭代。这样您就不会超出数组的长度。如果您的数组中有间隔,因为没有为某些数组插槽分配值,则可以使用forEach跳过这些间隔:

var arr = [];
// We leave a gap at [0]
arr[1] = "Test";
// Another gap at [2]
arr[3] = "Trial";

arr.forEach((x, i) => console.log(i, x));

答案 2 :(得分:0)

您只需要在数组中推送单个元素,然后访问两个元素,这就是为什么您获得undefined用于第二次数组访问的原因。

答案 3 :(得分:0)

您应该同时推送两个变量,这就是为什么对索引1取未定义导致数组仅包含一个元素的原因:

@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/rooms/**")
                .addResourceLocations("classpath:/rooms/")
                .setCachePeriod(3600)
                .resourceChain(true)
                .addResolver(new PathResourceResolver());
    }
    @Override
    public void addCorsMappings(final CorsRegistry registry) {
        registry.addMapping("/**");
    }

}

答案 4 :(得分:0)

如果没有任何元素,您可以添加一个空白字符串:

var textArray = []
var wordOne = "Hello";
var wordTwo = "World";

if (wordOne != "foo"){
  textArray.push(wordOne);
}
else {
  textArray.push('')
}

console.println(textArray[0] + ", " + textArray[1]);
//will print: 'Hello,'