将javascript数组迭代结果转换为单行文本字符串

时间:2018-11-29 19:41:00

标签: javascript arrays

我正在寻找一种方法来检查任何文本字符串(布尔值),如果使用数组则存在一个单词。目前,我对每个关键字都使用include()方法,因此效率低下。我认为使用for循环将有助于简化流程,但是我遇到了麻烦,因为我的返回值是多行。

我似乎无法弄清楚为什么我不能将迭代结果转换为文本字符串。我试过.Replace(/ \ r?\ n | \ r /),toString()和join(),但是没有运气。

function searchForKeywords() {
    let textString = 'This is a sample text string that contains a bunch of words, such as Semi and Metal. Happy searching!'
    let keywords = ['Clear', 'Metal', 'Silver', 'Semi']

    for (let i = 0; i < keywords.length; i++) {
        let a = (textString.includes(keywords[i]));
        let result = a.toString()
        console.log(result);
    }
}

searchForKeywords();

我从上面的代码中得到的结果如下:

是的

期望的结果将是:false,true,false,true

澄清一下,当我用join()和.Replace(/ \ r?\ n | \ r /)替换toString()时,我得到

  

TypeError:a.join不是函数|| TypeError:a.join不是函数

我不确定为什么会收到错误消息,作为一个菜鸟,没有人实时询问就学习了所有这些内容,这真令人沮丧。我敢肯定很多人都会经历...所以请对我温柔:-)

任何帮助将不胜感激。预先谢谢你。

2 个答案:

答案 0 :(得分:3)

您可以映射检查结果,并将值连接到带间隔符的字符串。

package com.kmb.transactionlogger.models;

@AllArgsConstructor
public class Transfer {
    @Getter @Setter
    private String userAccountNumber;
    @Getter @Setter
    private String title;
    @Getter @Setter
    private String recipientName;
    @Getter @Setter
    private String recipientAccountNumber;
    @Getter @Setter
    private double amount;
    @Getter @Setter
    private LocalDateTime localDateTime;

}

答案 1 :(得分:1)

代替输出每次迭代,将值推入结果数组,然后最后可以使用join格式化该数组:

let textString = 'This is a sample text string that contains a bunch of words, such as Semi and Metal. Happy searching!'
let keywords = ['Clear', 'Metal', 'Silver', 'Semi']

let result = [];
for (let i = 0; i < keywords.length; i++) {
    let a = textString.includes(keywords[i]);
    result.push(a)
}
console.log(result.join(", "));