逐个循环过滤字符串

时间:2020-05-10 21:33:17

标签: javascript for-loop replace

我正在尝试创建一个for循环,该循环将在删除不需要的单词后最终返回经过过滤的字符串。

例如,当给定红色黄色绿色黑色蓝色白色时,我希望输出为红色绿色蓝色

const givenString = 'red yellow green black blue white';
const unwantedWords = ['yellow', 'black', 'white'];

for(i = 0; i < unwantedWords.length; i++){
   let finalString = givenString.replace(unwantedWords[i], '');
   console.log(finalString)
}

问题是这将返回多个日志,每个日志都删除了三个单词之一。不是删除所有单词的最终日志

2 个答案:

答案 0 :(得分:3)

编辑

只想分享一本漂亮的ES6影片。

const givenString = 'red yellow green black blue white';
const unwantedWords = ['yellow', 'black', 'white'];
let finalString = givenString;
for (i = 0; i < unwantedWords.length; i++) {
  finalString = finalString.replace(unwantedWords[i], '');
}
console.log(finalString)

您每次都在循环内定义变量,因此本质上您只是过滤掉并丢弃了它。您应该在循环外定义它,并在循环内更改它。

fun scanQRCode(bitmap: Bitmap): String? {
    val options = FirebaseVisionBarcodeDetectorOptions.Builder()
            .setBarcodeFormats(FirebaseVisionBarcode.FORMAT_QR_CODE)
            .build()
    val detector = FirebaseVision.getInstance().getVisionBarcodeDetector(options);
    val image = FirebaseVisionImage.fromBitmap(bitmap)
    var id: String? = ""
    detector.detectInImage(image).addOnSuccessListener {
        if (it.isEmpty()) {
            id = null
            return@addOnSuccessListener
        }
        for (firebaseBarcode in it) {
            val a = it[0].rawValue ?: ""
            id = a

        }
    }.addOnFailureListener {
        id = null
    }
    return id
}

答案 1 :(得分:1)

您的givenString不变。每次将finalString的新更改从每个循环finalString更改为givenString时,const givenString = 'red yellow green black blue white'; const unwantedWords = ['yellow', 'black', 'white']; let finalString = givenString; for (i = 0; i < unwantedWords.length; i++) { finalString = finalString.replace(unwantedWords[i], ''); } console.log(finalString)都会更改。

if True:
    print("hi")