在这行代码中进行比较的是什么?

时间:2017-06-18 03:16:41

标签: javascript if-statement

ops [i]和[calc [j]]之间的空格是什么意思?什么比较。

private static void getAllWords(String letterPool, String currWord) {
    //Add to possibleWords when valid word
    if (letterPool.equals("")) {
        //System.out.println("");
    } else if(currWord.equals("")){
        for (int i = 0; i < letterPool.length(); i++) {
            String curr = letterPool.substring(i, i+1);
            String newLetterPool = (letterPool.substring(0, i) + letterPool.substring(i+1));
            if(dict.contains(curr)){
                possibleWords.add(curr);
            }

            boolean prefixInDic = binarySearch(curr);
            if( !prefixInDic ){
                break;
            } else {
                getAllWords(newLetterPool, curr);
            }
        }
    } else {
        //Every time we add a letter to currWord, delete from letterPool
        //Attach new letter to curr and then check if in dict
        for(int i=0; i<letterPool.length(); i++){
            String curr = currWord + letterPool.substring(i, i+1);
            String newLetterPool = (letterPool.substring(0, i) + letterPool.substring(i+1));
            if(dict.contains(curr)) {
                possibleWords.add(curr);
            }
            boolean prefixInDic = binarySearch(curr);
            if( !prefixInDic ){
                break;
            } else {
                getAllWords(newLetterPool, curr);
            }
        }
    }

private static boolean binarySearch(String word){
    int max = dict.size() - 1;
    int min = 0;
    int currIndex = 0;
    boolean result = false;
    while(min <= max) {
        currIndex = (min + max) / 2;
        if (dict.get(currIndex).startsWith(word)) {
            result = true;
            break;
        } else if (dict.get(currIndex).compareTo(word) < 0) {
            min = currIndex + 1;
        } else if(dict.get(currIndex).compareTo(word) > 0){
            max = currIndex - 1;
        } else {
            result = true;
            break;
        }
    }
    return result;
}

1 个答案:

答案 0 :(得分:0)

在这种情况下,该值不是比较,它只是被检查为true-ish。

例如,这些值为true-ish:

  • "hello"
  • 1
  • 234
  • {}
  • true(当然)

相反,这些值不是:

  • 0
  • null
  • false(当然)
  • undefined

所以,如果你这样做:

if (true) { console.log('This code will be run') }
if (234) { console.log('This one too!') }

if (0) { console.log('But this one won\'t') }

了解某个值是否为true的好方法是在它之前放置一个双!

console.log(!!0) // -> false
console.log(!!'hello') // -> true

这是有效的,因为!反转了值:如果它是真值,则会将其转换为实际 false,反之亦然。而且,如果你反转两次,你会得到你先拥有的东西。

现在,检查为true-ish的值位于2D数组中,如@ user1767754所示。看看这个:

const myArray = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
]

如何访问7?首先,你得到它的包含数组,这是第二个:myArray[1]。完成此操作后,您只需选择7,就像您通常所做的那样:myArray[1][2]

您可以将此视为表格。首先,选择行(1),然后选择列(2)。

但是你可以制作3D阵列,4D,无限制。

但是,如果值2位于另一个名为indices的数组中,如下所示:

const indices = [1, 2, 3, 4]

好吧,您可以myArray[1][indices[1]]访问7

然后,括号之间的空格无关紧要(something[1] [2]something[1][2]相同)。

希望它能帮助您理解您在问题中发布的代码。