我一次又一次地使用chrome获得此错误。虽然这段代码适用于firefox
这是错误图像的链接
https://www.dropbox.com/s/6ikiy5eesoxco4n/12_edited.jpg
我的代码如下
function weight(w)
{
var Cap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var small = 'abcdefghijklmnopqrstuvwxyz';
var spcl = "~!@#$%^&*()_+[]\{}|;':,./<>?";
var num = '0123456789';
var p = [];
for(var j=0;j<w.length;j++)
{
if(Cap.contains(w[j])==true)
p[j] = Cap.indexOf(w[j]) + 2;
else if(small.contains(w[j])==true)
p[j] = small.indexOf(w[j]) + 1;
else if(num.contains(w[j])==true)
p[j] = num.indexOf(w[j]);
else if(spcl.contains(w[j])==true)
p[j] = 1;
}
return _.reduce(p,function(memo, num){ return memo + num; }, 0);
}
我不明白为什么我的函数if(Cap.contains(w[j])==true)
未定义?
答案 0 :(得分:3)
String.prototype.contains
并未在所有浏览器中实现,因为它是即将推出的ECMAScript 6标准的一部分。
但是,您可以轻松修补它。
if (!String.prototype.contains) {
String.prototype.contains = function(s, i) {
return this.indexOf(s, i) != -1;
}
}
答案 1 :(得分:1)
正如 cookie monster 和 elclanrs 正确地说,&#39;包含()&#39;尚未在ECMAScript标准(换句话说,javascript)中定义。
但是,您仍然可以在字符串中搜索值,将其用作条件语句。通常的做法是使用indexOf()并将返回值评估为正值为true,false为-1。请参阅下面的示例:
function weight(w)
{
var Cap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var small = 'abcdefghijklmnopqrstuvwxyz';
var spcl = "~!@#$%^&*()_+[]\{}|;':,./<>?";
var num = '0123456789';
var p = [];
for(var j=0;j<w.length;j++)
{
if(Cap.indexOf(w[j]) > -1)
p[j] = Cap.indexOf(w[j]) + 2;
else if(small.indexOf(w[j]) > -1)
p[j] = small.indexOf(w[j]) + 1;
else if(num.indexOf(w[j]) > -1)
p[j] = num.indexOf(w[j]);
else if(spcl.indexOf(w[j]) > -1)
p[j] = 1;
}
return _.reduce(p,function(memo, num){ return memo + num; }, 0);
}
答案 2 :(得分:0)
if(your_string.indexOf('-') === -1)
{
alert("no dash found.");
}
对于字母数字,您可以使用正则表达式: