Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Array.Filter即使使用Polyfill也不能在IE 8中工作_Javascript_Jquery_Arrays - Fatal编程技术网

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"]