js 数组删除,js中如何移除数组中指定的元素(两种方法)
js 数组删除,js中如何移除数组中指定的元素(两种方法)详细介绍
本文目录一览: JS删除数组重复元素有哪些方法
这次给大家带来JS删除数组重复元素有哪些方法,JS删除数组重复元素的注意事项有哪些,下面就是实战案例,一起来看一下。 这里就 js 如何实现数组去重整理出5种方法,并附上演示Demo 以及 源码。 1.遍历数组法 最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持,需多写一些兼容低版本浏览器代码,源码如下:// 最简单数组去重法function unique1(array){ var n = []; //一个新的临时数组 //遍历当前数组 for(var i = 0; i < array.length; i++){ //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (n.indexOf(array[i]) == -1) n.push(array[i]); } return n;}// 判断浏览器是否支持indexOf ,indexOf 为ecmaScript5新方法 IE8以下(包括IE8, IE8只支持部分ecma5)不支持if (!Array.prototype.indexOf){ // 新增indexOf方法 Array.prototype.indexOf = function(item){ var result = -1, a_item = null; if (this.length == 0){ return result; } for(var i = 0, len = this.length; i < len; i++){ a_item = this[i]; if (a_item === item){ result = i; break; } } return result; }} 2.对象键值对法 该方法执行的速度比其他任何方法都快, 就是占用的内存大一些; 实现思路:新建一js对象以及新数组,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新增该键并放入新数组。注意点: 判断是否为js对象键时,会自动对传入的键执行“toString()”,不同的键可能会被误认为一样;例如: a[1]、a["1"] 。解决上述问题还是得调用“indexOf”。// 速度最快, 占空间最多(空间换时间)function unique2(array){ var n = {}, r = [], len = array.length, val, type; for (var i = 0; i < array.length; i++) { val = array[i]; type = typeof val; if (!n[val]) { n[val] = [type]; r.push(val); } else if (n[val].indexOf(type) < 0) { n[val].push(type); r.push(val); } } return r;} 3.数组下标判断法 还是得调用“indexOf”性能跟方法1差不多, 实现思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i,那么表示第i项是重复的,忽略掉。否则存入结果数组。function unique3(array){ var n = [array[0]]; //结果数组 //从第二项开始遍历 for(var i = 1; i < array.length; i++) { //如果当前数组的第i项在当前数组中第一次出现的位置不是i, //那么表示第i项是重复的,忽略掉。否则存入结果数组 if (array.indexOf(array[i]) == i) n.push(array[i]); } return n;} 4.排序后相邻去除法 虽然原生数组的”sort”方法排序结果不怎么靠谱,但在不注重顺序的去重里该缺点毫无影响。 实现思路:给传入数组排序,排序后相同值相邻,然后遍历时新数组只加入不与前一值重复的值。// 将相同的值相邻,然后遍历去除重复值function unique4(array){ array.sort(); var re=[array[0]]; for(var i = 1; i < array.length; i++){ if( array[i] !== re[re.length-1]) { re.push(array[i]); } } return re;} 5.优化遍历数组法 源自外国博文,该方法的实现代码相当酷炫; 实现思路:获取没重复的最右一值放入新数组。(检测到有重复值时终止当前循环同时进入顶层循环的下一轮判断)// 思路:获取没重复的最右一值放入新数组function unique5(array){ var r = []; for(var i = 0, l = array.length; i < l; i++) { for(var j = i + 1; j < l; j++) if (array[i] === array[j]) j = ++i; r.push(array[i]); } return r;}相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!推荐阅读:用laravel5.3 vue做出收藏夹功能vue.js的数据传递与数据分发步骤详解
js中如何移除数组中指定的元素(两种方法)
本篇文章给大家带来的内容是关于js中如何移除数组中指定的元素(两种方法) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。新建一个数组,把符合条件的数据通过push方法放进去比较简单,但是如果数据量比较多的时候就很消耗内存,性能比较差。现在有2种方法不重新创建数组,只改变原数组,完整代码如下:方法1var removeElement = function(nums, val) { for (var i = 0; i < nums.length; i++) { console.log(nums.length) if (nums[i] == val) { nums.splice(i,1) i=i-1 } } return nums; }; console.log(removeElement([0,1,2,2,3,0,4,2],2)) //[0,1,3,0,4]方法2 var removeElement = function(nums, val) { var sameNum=0; for (var i = 0; i < nums.length-sameNum; i++) { if (nums[i] == val) { sameNum++ var delData=nums.splice(i,1) nums.push(delData[0]) i=i-1; } } nums.length=nums.length-sameNum return nums; }; console.log(removeElement([3,2,2,3],3)) //[2,2]
js如何删除数组里的某个元素
js如何删除数组里的某个元素,本文主要和大家分享js删除数组里的某个元素的方法实例。首先可以给js的数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引,代码为:Array.prototype.indexOf = function(val) {for (var i = 0; i < this.length; i++) {if (this[i] == val) return i;}return -1;};然后使用通过得到这个元素的索引,使用js数组自己固有的函数去删除这个元素: 代码为:Array.prototype.remove = function(val) {var index = this.indexOf(val);if (index > -1) {this.splice(index, 1);}};这样就构造了这样一个函数,比如我有有一个数组:var emp = ['abs','dsf','sdf','fd']假如我们要删除其中的 'fd' ,就可以使用://code from http://caibaojian.com/js-splice-element.htmlemp.remove('fd');删除的数组的某一项splice(index,len,[item]) 注释:该方法会改变原始数组。splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值·index:数组开始下标 len: 替换/删除的长度 item:替换的值,删除操作的话 item为空如:arr = ['a','b','c','d']删除//删除起始下标为1,长度为1的一个值(len设置1,如果为0,则数组不变)var arr = ['a','b','c','d'];arr.splice(1,1);console.log(arr); //['a','c','d']; //删除起始下标为1,长度为2的一个值(len设置2)var arr2 = ['a','b','c','d']arr2.splice(1,2);console.log(arr2); //['a','d']替换//替换起始下标为1,长度为1的一个值为‘ttt’,len设置的1var arr = ['a','b','c','d'];arr.splice(1,1,'ttt');console.log(arr); //['a','ttt','c','d'] var arr2 = ['a','b','c','d'];arr2.splice(1,2,'ttt');console.log(arr2); //['a','ttt','d'] 替换起始下标为1,长度为2的两个值为‘ttt’,len设置的1添加 ---- len设置为0,item为添加的值var arr = ['a','b','c','d'];arr.splice(1,0,'ttt');console.log(arr); //['a','ttt','b','c','d'] 表示在下标为1处添加一项'ttt'2:delete delete删除掉数组中的元素后,会把该下标出的值置为undefined,数组的长度不会变var arr = ['a','b','c','d'];delete arr[1];arr; //["a", undefined × 1, "c", "d"] 中间出现两个逗号,数组长度不变,有一项为undefined更多相关推荐:javascript数组的方法javascript数组去重javascript常用代码大全更新2016-11-17:在stackoverflow高分回答上看到jquery之父John Resig曾经的文章写过的一个代码:// Array Remove - By John Resig (MIT Licensed)Array.prototype.remove = function(from, to) { var rest = this.slice((to || from) + 1 || this.length); this.length = from < 0 ? this.length + from : from; return this.push.apply(this, rest);};下面给出一些实际的用例:// 移除数组中的第二项array.remove(1);// 移除数组中的倒数第二项array.remove(-2);// 移除数组中的第二项和第三项(从第二项开始,删除2个元素)array.remove(1,2);// 移除数组中的最后一项和倒数第二项(数组中的最后两项)array.remove(-2,-1);这个例子跟上面第一个的还是挺相似的,不过没有检查元素的具体项目,而是通过元素在数组的下标位置来定位删除。
js从数组中删除指定值(不是指定位置)的元素
无法删除,但是可以替换来解决此问题。
如下参考:
1.indexOf()方法可以返回要查找元素的索引值,如果没有找到则返回-1,创建一个新的HTML文档用于加载度JS。
2.Vararr=['apple','banana','pear','orange']。
3.定义一个带有两个参数的函数,STR参数表示:指定要删除的元素,arr参数表示:被删除元素的数组。
4.定义函数体,样本代码:varindex=arr.indexOf(STR)。
5.调用函数delOne(),示例代码:delOne('pear',arr)。
js怎么从数组中删除指定值(不是指定位置)的元素?
var a = new Array("a","b","cc","d3");//
删除a数组的cc元素 //jQuery.inArray()函数用于在数组中搜索指定的值,并返回其索引值。如果数组中不存在该值,则返回 -1。该函数属于全局jQuery对象。
jquery 1.2中添加的该静态方法var index = $.inArray("cc",a); if(index>=0){//arrayObject.splice(index,howmany,item1,.....,itemX) //参数描述//index 必需。
整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置,//howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
//item1, ..., itemX 可选。向数组添加的新项目。 a.splice(index,1); alert(a.totring());}else{ alert("error"); return false;}
js常用删除数组方法
下面三种都会影响原数组,最后一项不影响原数组:
opop()
oshift()
osplice()
oslice()
1、pop()
pop() 方法用于删除数组的最后一项,同时减少数组的length 值,返回被删除的项
let colors = ["red", "green"]
let item = colors.pop(); // 取得最后一项
console.log(item) // green
console.log(colors.length) // 1
2、shift()
shift()方法用于删除数组的第一项,同时减少数组的length 值,返回被删除的项
let colors = ["red", "green"]
let item = colors.shift(); // 取得第一项
console.log(item) // red
console.log(colors.length) // 1
3、splice()
传入两个参数,分别是开始位置,删除元素的数量,返回包含删除元素的数组
let colors = ["red", "green", "blue"];
let removed = colors.splice(0,1); // 删除第一项
console.log(colors); // green,blue
console.log(removed); // red,只有一个元素的数组
4、slice()
slice() 用于创建一个包含原有数组中一个或多个元素的新数组,不会影响原始数组
let colors = ["red", "green", "blue", "yellow", "purple"];
let colors2 = colors.slice(1);
let colors3 = colors.slice(1, 4);
console.log(colors) // red,green,blue,yellow,purple
concole.log(colors2); // green,blue,yellow,purple
concole.log(colors3); // green,blue,yellow
js清空数组方法
清空数组并塞入新数据的方法:
注意:splice 返回的是含有被删除的元素的数组,没有删除的话返回空数组:
参考: js清空数组的三种方法
js中删除数组或对象
在vue中使用
vue.delete()
删除对象属性
通过delete操作符, 可以实现对对象属性的删除操作, 返回值是布尔
例: ???? var obj={name: 'zhagnsan',age: 19 }
????????????delete obj.name //true
????????????typeof obj.name //undefined
同样可用于函数,数组,变量,对象,但对象不能删除,只能做到删除对象属性
删除变量
例:?var name ='zs' //已声明的变量
? ??????delete name? //false
? ??????console.log(typeof name)? //String
? ??????age = 19? //未声明的变量
? ??????delete age //true
? ??????typeof age //undefined
? ??????this.val = 'fds'? //window下的变量
? ??????delete this.val ? //true
? ??????console.log(typeof this.val)? //undefined
删除数组
以声明数组返回false,未声明返回true
var arr = ['1','2','3'] ///已声明的数组
delete arr //false
console.log(typeof arr)? //object
arr = ['1','2','3']? //未声明的数组
delete arr? //true
console.log(typeof arr)? //undefined
var arr = ['1','2','3']? //已声明的数组
delete arr[1]? //true
console.log(arr)? //['1','empty','3']
删除函数
var fn = function(){} //已声明的函数
delete fn //false
console.log(typeof fn)? //function
fn = function(){}? //未声明的函数
delete fn //true
console.log(typeof fn)? //undefined
删除对象
var person = {
? height: 180,
? long: 180,
? weight: 180,
? hobby: {
? ? ball: 'good',
? ? music: 'nice'
? }
}
delete person? ///false
console.log(typeof person)? //object
var person = {
? height: 180,
? long: 180,
? weight: 180,
? hobby: {
? ? ball: 'good',
? ? music: 'nice'
? }
}
delete person.hobby? ///true
console.log(typeof person.hobby)? //undefined
js从一个数组中删除另一个数组中存在的元素
js 数组的 some 方法:
some 方法用于检测数组中元素是否满足指定条件, 通俗点讲: 查找数组中是否有满足条件的元素;方法返回的是布尔值,
如果可以查到这个元素,就会返回true;
如果查找不到就会返回false;
如果找到一个满足条件的元素, 则终止循环, 不在继续查找。