如果没有匹配,则为变量赋值null,如果匹配,则将第二个匹配分配给变量。
这就是我的想法,但是当它返回null时,它仍会检查其余的代码是否为false。那么我得到一个Uncaught TypeError: Cannot read property '1' of null
。
我如何解决这一部分以使其工作而不是给我一个错误?
var matches = $("#search input").val().match(pattern);
var id = [];
id["new"] = (typeof matches === null) ? null : matches[1]; // <--
答案 0 :(得分:1)
typeof
运算符总是返回一个永远不会=== null的字符串。
由于$("#search input").val().match(pattern)
的结果在匹配时没有匹配且数组匹配时始终为null
,因此null
为假值,因此您可以这样做:
id["new"] = matches ? matches[1] :null;
甚至:
id["new"] = matches && matches[1];
答案 1 :(得分:0)
试试这个:
id["new"] = (matches == null) ? null : matches[1];
如果找不到匹配项, .match()
会返回null
。