可能的逻辑错误或比较器问题

Possible logic error or comparator issue

我正在做以下事情:

if ($('#selectYears option[value="' + $(this).val() + '"]') != null || $('#selectYears option[value="' + $(this).val() + '"]') != [] ) {
      console.log("inside if")
      $('#selectYears option[value="' + $(this).val() + '"]').remove().appendTo($('#selectYears'))
    } else {
      console.log("inside else")
      $('#selectedYears option[value="' + $(this).val() + '"]').remove().appendTo($('#selectYears'))
    }
})

如果我在 Chrome 的控制台中执行 $('#selectYears option[value="my value"]'),我会得到 []。但是如果我在里面打印出来(因此我的检查失败了)。在这种情况下,我需要进入 else。我哪里错了?

一个jQuery选择器从不returns null或一个数组,它returns一个jQuery对象。它在控制台中看起来像一个数组,因为它具有使它成为 "array-like" 的属性,但它实际上不是一个数组,不会与 [] 进行比较。有关更多信息,请参阅

What makes a jQuery object show up as an array in Chrome's Developer Tools?

如果您想知道是否匹配任何内容,请使用 .length:

if ($('#selectYears option[value="' + $(this).val() + '"]').length != 0) {