Javascript 在jQuery中查找替代方法?
我使用的是我之前问过的方法,我意识到IE中不支持它。IE中是否支持jQuery等价物,或者甚至不同的Javascript等价物Javascript 在jQuery中查找替代方法?,javascript,jquery,arrays,Javascript,Jquery,Arrays,我使用的是我之前问过的方法,我意识到IE中不支持它。IE中是否支持jQuery等价物,或者甚至不同的Javascript等价物 var区域=[{ “区域”:“一个”, “Zipcode”:[“69122”、“69125”、“69128”、“69129”] }, { “区域”:“两个”, “Zipcode”:[“67515”、“67516”、“67518”、“67521”] } ]; $(函数(){ $('#userZip')。提交(函数(e){ e、 预防默认值(); var userZip=
var区域=[{
“区域”:“一个”,
“Zipcode”:[“69122”、“69125”、“69128”、“69129”]
},
{
“区域”:“两个”,
“Zipcode”:[“67515”、“67516”、“67518”、“67521”]
}
];
$(函数(){
$('#userZip')。提交(函数(e){
e、 预防默认值();
var userZip=$('input[type=“text”]”)。val();
变量区域=区域。查找(函数(区域){
返回区.zipcodes.indexOf(userZip)>-1;
});
警报(“区域:+Zone.Zone”);
});
});代码>
i{
显示:块;
}
输入邮政编码“69122”作为示例
IE9+支持Array.filter,如果这足够好的话
显然,您可能会得到多个结果,因此如果您打算这样做,只需选择第一个结果。polyfill:
Array.prototype.find = Array.prototype.find || function (callback) {
for (var i = 0; i < this.length; i++) {
if (callback(this[i], i)) {
return this[i];
}
}
};
Array.prototype.find=Array.prototype.find | |函数(回调){
for(var i=0;i
如果您想要一个更好的,请查看您提供的第一个链接的polyfill部分…或者,您也可以使用标准for loop
var区域=[{
“区域”:“一个”,
“Zipcode”:[“69122”、“69125”、“69128”、“69129”]
},
{
“区域”:“两个”,
“Zipcode”:[“67515”、“67516”、“67518”、“67521”]
}
];
功能findZone(zns,zip){
var zone={};
对于(var i=0;i log(findZone(zones,“67515”))
使用jQuery的函数:
$(function() {
$('#userZip').submit(function(e) {
e.preventDefault();
var userZip = $('input[type="text"]').val();
var zone = $.grep(zones, function (element, index) {
if ($.inArray( userZip, element.zipcodes ) > -1) return true;
});
alert("Zone: " + zone[0].zone);
});
});
在这里摆弄:jQuery.grep
的工作原理与数组的find
方法类似,它使用提供的函数对类似数组的对象和过滤器进行操作。
结果是一个新数组,其中只包含通过测试的元素。它还有一个可选的invert
参数
e、 为你的代码
var filteredZones = $.grep(zones, function(zone) {
return zone.zipcodes.indexOf(userZip) > -1;
});
if (filteredZones.length) {
var zone = filteredZones[0];
}
您可以在此处了解更多信息-为什么不在传统浏览器中对其进行修补?依赖大型库提供简单的兼容性补丁似乎不是最好的方法。jQuery由于其他原因已经包含在这个项目中,因此它不会添加任何内容。