Javascript 使用Array.Filter即使使用Polyfill也不能在IE 8中工作
我在项目中使用以下代码:-Javascript 使用Array.Filter即使使用Polyfill也不能在IE 8中工作,javascript,jquery,arrays,Javascript,Jquery,Arrays,我在项目中使用以下代码:- uniqueArray = checkboxitems.filter(function(elem, pos, self) { return self.indexOf(elem) == pos; }) uniqueArray和checkboxitems定义为var uniqueArray/checkboxitems=new Array checkboxitems数组包含用于填充复选框并包含重复项的文本值列表。上述代码在Firefox和Google Chrome中运行良
uniqueArray = checkboxitems.filter(function(elem, pos, self) {
return self.indexOf(elem) == pos;
})
uniqueArray和checkboxitems定义为var uniqueArray/checkboxitems=new Array
checkboxitems数组包含用于填充复选框并包含重复项的文本值列表。上述代码在Firefox和Google Chrome中运行良好,但由于IE8中缺少.filter和.indexOf,因此在该浏览器中无法运行。所以在这里搜索并找到了mozillas垫片的参考资料,就像我试图使用它一样。但它似乎不起作用。res数组和我的uniqueArray变量从不填充
我还尝试用我的代码替换a和unique数组
var a = [1,5,1,6,4,5,2,5,4,3,1,2,6,6,3,3,2,4];
// note: jQuery's filter params are opposite of javascript's native implementation :(
var unique = $.makeArray($(a).filter(function(i,itm){
// note: 'index', not 'indexOf'
return i == $(a).index(itm);
}));
// unique: [1, 5, 6, 4, 2, 3]
从使用jquery中提取,但这同样不起作用
有人知道我该怎么做吗
谢谢
克雷格
我现在从这里使用的更新:-
这是我想要的
但是,我发现的一件事是,中的代码导致索引值增加1太多!不过,使用这里的代码还是像预期的那样工作。我注意到您最初的尝试是使用原生/香草JavaScript。我知道有些人不喜欢甜食,但我也需要对它进行分类
if(!Array.prototype.unique) {
Array.prototype.unique = function () {
var nArr = [],
oLen = this.length,
dup, x, y;
for (x = 0; x < oLen; x++ ){
dup = undefined;
for (y = 0; y < nArr.length; y++ ){
if( this[x] === nArr[y] ){
dup = 1;
break;
}
}
if(!dup) { nArr.push(this[x] ); }
}
return nArr;
};
}
var myArr = ["above", "code", "works", "code", "works", "just", "and", "hence"];
var uniqueArr = myArr.unique(); //["above", "code", "works", "just", "and", "hence"]
对于jQuery函数:您使用的是什么版本的jQuery?根据文档,jQ 2+只支持IE9+:您能否确认这在IE8中是否有效?构建了一个快速的提琴,无法检查,因为我在Mac上:嗨,我使用的是jQuery的1.7.2。jsfiddle甚至不适用于IE8,有很多javascript错误!!!哦,哈哈。我完全忘记了。看来你已经找到了解决办法:
if(!Array.prototype.unique) {
Array.prototype.unique = function () {
var nArr = [],
oLen = this.length,
dup, x, y;
for (x = 0; x < oLen; x++ ){
dup = undefined;
for (y = 0; y < nArr.length; y++ ){
if( this[x] === nArr[y] ){
dup = 1;
break;
}
}
if(!dup) { nArr.push(this[x] ); }
}
return nArr;
};
}
var myArr = ["above", "code", "works", "code", "works", "just", "and", "hence"];
var uniqueArr = myArr.unique(); //["above", "code", "works", "just", "and", "hence"]