昨天在工作中遇到一个问题:数组的indexOf()方法在IE8中无效. 如以下代码在IE8中报错“对象不支持“indexOf”属性或方法”: var arr = [1,2,3]; var index = arr.indexOf(3); 解决方法1:在调用的indexOf方法前加上toString()将数组转换为字符串,再调用indexOf(),但是这时又发现3的index并不是我们预期的2,而是4,因为转换为字符串之后是"1,2,3",在查index的时候把逗号也算进去的了,显然这也不…
var  questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf = function (e) { for (var i = 0, j; j = this[i]; i++) { if (j.indexOf(e) != -1) { return i; } } return -1; } if (anSwerIdValue.length < 14) { alert(&quo…
/* 终于解决了IE8不支持数组的indexOf方法 */ if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (elt /*, from*/) { var len = this.length >>> 0; var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (…
在IE8下有个js错误,但是在其它浏览器下(Firefox, Chrome, IE9)下面都很正常.后来调试发现原因是在IE8下,js数组没有indexOf方法. 在使用indexOf方法前,执行一下下面的js, 原理就是如果发现数组没有indexOf方法,会添加上这个方法   if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt /*, from*/) { var len = this.length >>…
转自:http://www.jbxue.com/article/8367.html 原因分析: 这是一个js bug, 在IE8下,js数组没有indexOf方法,会报错:而在其它浏览器下(Firefox, Chrome, IE9)都是正常的. 解决方案: 1.个人在网上找到了一种解决方法:就是在使用indexOf方法前,验证一下是否存在该方法IndexOf方法,如果有调用:如果没有就添加一个:代码如下: //添加数组IndexOf方法 if (!Array.prototype.indexOf)…
数组的indexOf方法 数组方法大家再熟悉不过了,却忽略了数组有 indexOf 这个方法(我个人感觉). 干说不练瞎扯淡,遇到了什么问题,注意⚠️点又在哪里? let arr = ['orange', '2016', '2016']; arr.indexOf( arr.indexOf('o'); //-1 arr.indexOf( arr.indexOf(2016); //-1 这里没把例子拆的那么细,四个用例足以说明问题. arr.indexOf(‘orange')  输出 0 因为 ‘o…
在Javascript中,有时我们会用到数组去重.我在这里给大家介绍一下本人认为最简单实用的一种方法-indexOf()去重. var arr = [1,1,1,2,2,2,3,3,4,5,6,2,1]; var arr2 = []; for(var i = 0;i < arr.length;i++){ if(arr2.indexOf(arr[i]) == -1){ arr2.push(arr[i]) } } console.log(arr2) //[1,2,3,4,5,6] 它的原理非常的简单…
在js中,可以说万物皆对象(object),一个数组也是一个对象(array). 很多对象都有很多很方便的方法 比如数组的push,concat,slice等等,但是如果一些对象,它没有实现这些方法,我们还是想使用这些功能.那该怎么办呢? 1.很多方法都提供了非常高效的实现, 我们可以仿照它们的实现. 比如IE8以下的浏览器不支持Array的indexOf方法,为了让数组支持indexOf,我们可以自己写一个方法,实现indexOf方法: (用IE浏览器调试 按F12,可以选择浏览器版本到IE5…
在javascript数组中提供了两个方法来对数组进行查找,这两个方法分别为indexOf(),lastIndexOf(). 这两个方法都有两个参数,第一个参数为需要查找的项,第二个参数则是查找的起始位置(该值为数组中的位置,也就是从0开始计数,该值包含本身). indexOf() indexOf()是正向查找,根据数组从第一项开始查找一直查找到最后项,如果没有查找到则返回-1,如果查找到了就返回该项基于数组中的位置(也就是从0开始计数).如: var values = [5,6,7,8,9,1…
数组在我目前学习过的编程语言中都可以见到, 形形色色的方法也数不胜数, 不过功能都一样, 最多也就是方法名稍稍有所不同, 老外也没个准啊, 如果英语比较好的同学对于学习方法(method)来说是很快的, 因为基本都可以翻译出来, 不过也要勤加锻炼, 总体来说, 英语水平不怎么影响编程技术, 看看API的话, 认识点简单的词汇, 就差不多了. 数组对象 文中一再的把数组和对象一起说, 是因为数组具有对象的一切特性, 更准确的说数组属于一类对象, 一类继承自Array.prototype的对象, 所…
数组方法集合 push()添加到数组末尾,并返回修改后数组的长度 var a=array.push('a','b'); alert(a);//2 pop() 移除数组最后一项,返回移除的项. shift()移除数组第一项,返回移除的项. unshift()添加到数组第一项,返回修改后的长度. concat() 一些值添加到数组末尾,新数组 var colors=['red']; var colors2=colors.concat('yellow',['black','brown']); aler…
一次面试中,面试官要求用三种不同的Javascript方法进行一个数字数组的求和,当时思来想去只想到了使用循环这一种笨方法,因此面试比较失败,在这里总结了六种Javascript进行数组求和的方法,以便参考,也好让大家重温一下Javascript基础知识 需求 ,任意一个不知长度的纯数字数组(可以整数.小数或负数),求数组所有元素之和方法一当然是先想到使用最笨的暴力方法,循环求和法:(其实并不笨,毕竟循环是所有编程语言的一个重要方法,使用它并不丢脸)二话不说 上代码 var arr = [1,3…
1.join() 将数组的元素组成一个字符串,以分隔符连接,如果省略则默认逗号为分隔符,该方法只接收一个参数:分隔符.此方法不会改变原数组. let arr = [1,2,3,4] let arr1 = arr.join(); let arr2 = arr.join('-'); console.log(arr1);//1,2,3,4 console.log(arr2);//1-2-3-4 console.log(arr);//(4) [1, 2, 3, 4] 2.push() 可以添加任意数量的…
文章来源于:https://www.cnblogs.com/dolphinX/p/3353590.html 创建数组 构造函数 1.无参构造函数,创建一空数组 var a1=new Array(); 2.一个数字参数构造函数,指定数组长度(由于数组长度可以动态调整,作用并不大),创建指定长度的数组 var a2=new Array(5); 3.带有初始化数据的构造函数,创建数组并初始化参数数据 var a3=new Array(4,'hello',new Date()); 字面量 1.使用方括号…
border-raduis 是css3新增加的属性,我们运用起来也很方便,效果很好,但是在IE8以及之前的ie版本并不支持这个属性,怎么解决这个问题呢? 1.切成背景 这也是我经常用到的方法,虽然说有点麻烦,但是肯定没有问题.在碰到圆角时,我会去查看UI给我的psd图片,看看我是否可以直接将这个圆或圆角切图切下来,这样之后我都不用考虑写border-raduis这个属性了,直接将背景图片放上去就可以了,这种做法还有个好处就是不会碰到PNG的黑边现象.但是也有一个问题,就是这个图片的尺寸一点要切好…
js中,按照值删除数组中的某个元素 Array.prototype.indexOf = function(val) {            for (var i = 0; i < this.length; i++) {                if (this[i] == val) return i;            }            return -1;        };        Array.prototype.remove = function(val) {  …
ie在过去给我们添了很多坑. if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt /*, from*/ ) { var len = this.length >>> 0; var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) fr…
JavaScript中的Array类型是经常用到的,Array类型也提供了很多方法能实现我们需求,下面我们来总结一下 一.创建Array的方法 1.使用Array构造函数 var colors=new Array(); var colors=new Array(3);//创建一个长度为3的数组 var colors=new Array("red","blue")//创建一个数组["red","blue"] 当然,上面的new可…
文章参考地址:http://blog.csdn.net/chengxuyuan20100425/article/details/8497277 题目 对下列数组去重: var arr = ['aa','bb','cc','',1,0,'1',1,'bb',null,undefine,null]; 要求考虑兼容性和效率 方法一 function unique(arr){ var result = []; for (var i = 0;i<arr.length;i++){ //如果当前数组的第i项已…
数组经常用到的方法有push.join.indexOf.slice等等,但是有一个经常被我们忽略的方法:reduce,这个方法简直强大的不要不要的. 我们先来看看这个方法的官方概述:reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值. 你一定也和我一样看的有点迷糊,其实reduce接收的就是一个回调函数,去调用数组里的每一项,直到数组结束. 我们来举个栗子大家就很明白了.假设我有一串数组,数组里放的全是数字,我要算出这些数字的…
前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 方法一 //注意有一个元素是空的 var test1 = [0, 0, 1, 1, 2, 'sss', 2, , 3, 'abc', 3, 4, 4, 'sss', 'apple', 5, 5, 6, 7, 8, 9, function a() {}]; //第一种方法是遍历新数组newArr里有没有包含arr里的i项,如果没有则向newArr里添加arr[i]项,如果有则跳过 //需考虑indexOf…
Array 对象属性 属性 描述 constructor 返回对创建此对象的数组函数的引用. length 设置或返回数组中元素的数目. prototype 使您有能力向对象添加属性和方法. Array 对象方法 方法 描述 concat() 连接两个或更多的数组,并返回结果. join() 把数组的所有元素放入一个字符串.元素通过指定的分隔符进行分隔. pop() 删除并返回数组的最后一个元素 push() 向数组的末尾添加一个或更多元素,并返回新的长度. reverse() 颠倒数组中元素的…
现在要求去重下面这个数组: const arr = [1, 2, 3, 3, 3, '0', '1', '2', '测试', '重复', '重复', NaN, NaN, false, false]; 方法一:ES6 Set() let arr = [1, 2, 3, 3, 3, '0', '1', '2', '测试', '重复', '重复', NaN, NaN, false, false];arr = [...new Set(arr)]; //去重后: [ 1, 2, 3, '0', '1',…
数组声明:通过let arr = new Array(); 或者 let arr = []; 数组对象可调用的方法: 1)find方法,使用情况是对数组进行筛选遍历,find方法要求某个函数(A)作为参数,A函数的参数是数组的元素,find方法的最终返回值是第一个使A返回true的数组元素,并且不改变原数组. let arr = [1,2,3,4,5,6]; arr.find(function check(item){ return item>2; }); 2)map方法 3)prototype…
改变原数组: ※ push,pop,shif,unshift,sort,reverse ※ splice 不改变原数组: ※ concat,join→split,toString,slice push :后一位添加 pop :后一位删除 shift :前一位删除 unshift :向前一位添加 sort  :给数组排序(按ASCLL) reverse :逆转顺序 splice :切片 系统push方法的实现: var arr=[1,2,3]; Array.prototype.push=funct…
数组元素的添加 1. arrayt.splice(index,howmany,item1,.....,itemX) 向/从数组中添加/删除项目,然后返回被删除的项目 2. array.unshift() 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度 3. array.push(newelement1,newelement2,....,newelementX) 将一个或多个新元素添加到数组结尾,并返回数组新长度 数组元素删除 1. array.pop() 删除并返回数组的…
if (!Array.indexOf) {                                    Array.indexOf = function (obj) {                                        for (var i = 0; i < this.length; i++) {                                            if (this[i] == obj) {                 …
1.循环 2.Array.from(arr) 3.let arr2 = [...arr]…
前言 这两天在家中帮朋友做项目,项目中使用了数组的indexOf 方法,找到了一篇文章,感觉非常不错,顺便整理下以防链接丢失. 相信说到 indexOf 大家并不陌生,判断字符串是否包涵子字符串时特别常用,正则不熟练同学的利器.这篇文章就最近遇到的一个问题,用实例再说说说indexOf方法.本文是小知识点积累,不作为深入讨论的话题,因此这里没有解释indexOf()的第二个参数,相信大家都知道第二个参数的作用. String 类型的使用 温习一下大家熟知的字符串用法,举个例子 let str =…