javascript 如何检查是否可以使用对象从str1生成str2

pqwbnv8z  于 2022-12-17  发布在  Java
关注(0)|答案(2)|浏览(107)

我一直在努力找出如何在计数低于0时返回false,尝试使用第二个循环,但是我不知道如何在计数达到0时立即停止计数

let char = {}

function charCount(str1, str2) {
  str1 = str1.toLowerCase()
  str2 = str2.toLowerCase()

  for (i = 0; i < str1.length; i++) {
    if (str1[i] in char) {
      char[str1[i]]++
    } else {
      char[str1[i]] = 1
    }
  }

  for (i = 0; i < str2.length; i++) {
    // Error is found here
    if (str2[i] in char) {
      char[str2[i]]--
    } else {
      return false
    }
  }
  console.log(char)
  return true
}
console.log(charCount("hello", "helllo"))

产出

{h: 0, e: 0, l: -1, o: 0}
true
e5nqia27

e5nqia271#

您可以检查该属性是否具有真实值,然后递减,否则使用false退出循环。
顺便说一句,你应该声明变量,否则你会得到全局变量,这可能会导致混乱。

function charCount(str1, str2) {
    let char = {};
    str1 = str1.toLowerCase();
    str2 = str2.toLowerCase();

    for (let i = 0; i < str1.length; i++) {
        if (str1[i] in char) char[str1[i]]++;
        else char[str1[i]] = 1;
    }

    for (let i = 0; i < str2.length; i++) {
        if (char[str2[i]]) char[str2[i]]--;
        else return false;
    }
    return true;
}

console.log(charCount("hello", "helllo"));
ylamdve6

ylamdve62#

反转if条件,并为计数达到0添加检查。

if (str2[i] not in char || str2[i] == 0) {
      return false;
    } else {
      char[str2[i]]--;
    }

相关问题