我正在构建一个脚本,用于测试对象中是否存在变量。为此,我使用regEx来测试对象中是否存在该特定名称。
我面临的问题是JSON响应有时会翻译成德语或西班牙语。
因此,在下面的情况下,我想测试spec.title
名称Length (mm)
。此标题也可以是Länge (mm)
和Longitud (mm)
。
在我的项目中,已经建立了一个名为getAjaxTranslation('string')
的翻译功能
因此,getAjaxTranslation('length')
将返回已翻译的字符串以获取长度。
所以我的问题是如何在下面的代码中使用getAjaxTranslation('length')
进行测试?
所以我尝试的是:
reLength = '/'+ getAjaxTranslation('length') + '/i' //just to try
reLength = "'+ getAjaxTranslation('length') + '";
reLength = getAjaxTranslation('length')
以上尝试会出现reLength.test is not a function
等错误。所以我可能会使用错误的字符串/变量或做错事。我仍然遇到那些regExs的问题...
任何帮助都非常感谢!
完整代码:
var data = {
"product": {
"specs": {
"231638": {
"id": 231638,
"title": "Length (mm)",
"value": "1200"
},
"231641": {
"id": 231641,
"title": "Width (mm)",
"value": "800"
},
"231644": {
"id": 231644,
"title": "Height (mm)",
"value": "144"
} //etc etc
}
}
};
var length = 0, width = 0, height = 0,
reLength = /length/i,
reWidth = /width/i,
reHeight = /height/i;
$.each(data.product.specs, function (specId, spec) {
if (reLength.test(spec.title))
length = spec.value;
else if (reWidth.test(spec.title))
width = spec.value;
else if (reHeight.test(spec.title))
height = spec.value;
});
答案 0 :(得分:3)
以上尝试给出了像reLength.test不是函数等错误。
test
是RegExp
对象的一种方法,将其设为
reLength = new RegExp( getAjaxTranslation('length') , "i" )
或使用match
代替test
,例如
reLength = getAjaxTranslation('length'); //no need to make a regexp object
!!spec.title.match(reLength)
或
reLength = getAjaxTranslation('length');
spec.title.includes(reLength) //use includes