用php数组去掉重复值的splice()方法及语法判断删除php数组去掉重复值[1,2,3,”1”,1,1,2,33]重复的元素, 保留前者去除后者?

关于删除数组Array元素的问题,splice()在IE下的使用方法~~~~~~~~~~~~~~~~
[问题点数:20分,结帖人zhouyu1215]
关于删除数组Array元素的问题,splice()在IE下的使用方法~~~~~~~~~~~~~~~~
[问题点数:20分,结帖人zhouyu1215]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
本帖子已过去太久远了,不再提供回复功能。当前访客身份:游客 [
当前位置:
var arr = [1, 2, 3, 4, 5, 6];
arr.map(function (v, k) {
console.log(v);
arr.splice(k, 1);
console.log(arr);
按照理解, 应该是每个元素都被删除, 但是结果确实每隔1个被删除
请教一下各位大大, 造成这样的结果原因是什么?
最后我的解决方式是
var arr = [1, 2, 3, 4, 5, 6];
var removeArr = [];
arr.map(function (v, k) {
removeArr.push(k);
removeArr.map(function (v) {
arr.splice(v, 1);
}); 有没有更好的解决方法呢?
问题总汇:
1.造成隔位删除的原因是什么
2.有没有更好的解决方法
共有6个答案
<span class="a_vote_num" id="a_vote_num_
那也不是你这样用的,如果你用的是ECMAScript 5中标准的map方法,你要理解map是干什么用的。map是利用传入的回调生成一个新的数组。
你这种情况直接使用如下方式就可以:
var arr = [1,2,3,4,5,6];
//以下3个例子都是删除数组中不是偶数的数
//方法一、使用ECMAScript 5中定义的方法filter(如果已经兼容了浏览器,建议)
arr = arr.filter(function(v, i){
return v%2===0; //只保留原数组中的偶数
//方法二、使用jQuery的grep工具方法(建议)
arr = $.grep(arr, function(v, i){
return v%2===0; //只保留原数组中的偶数
//方法三、使用jQuery的map工具方法(不建议)
arr = $.map(arr, function(v, i){
return v%2===0 ? v : //返回null的项目将被删除
--- 共有 2 条评论 ---
: 如果在需要考虑性能的情况当然是for好,否则就是工具方法好了。包括Array.prototype.forEach、Array.prototype.map、$.each、$.map都是可以的。
(2年前)&nbsp&
遍历一个数组, 不进行散除, 是用for循环好还是使用数组的什么方法比较好呢
(2年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
感觉需求是用Array.filter这个函数的节奏,怎么用到map了呢?
<span class="a_vote_num" id="a_vote_num_
splice后会重建数组索引,你删了1个,后面的元素下标都减1,往前靠拢。
把你的console.log(v)改成console.log(arr,k,v)看看效果。
--- 共有 1 条评论 ---
有没有什么更加好的办法解决这个问题
(2年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
如果你是要清空数组,建议使用 arr.length = 0; 这是最好的方式
--- 共有 1 条评论 ---
不是要清空数组, 是删除特定条件的元素, 这个问题是最后简化了的
(2年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
合理的解决方案是用引入另一个数组,在对原有数组进行迭代时,禁止删除或者增加原有数组元素,而要对符合条件的数组元素push到另一个目标数组,然后将目标数组输出。
<span class="a_vote_num" id="a_vote_num_
数组有map方法吗?
有什么技术问题吗?
mr-zhuo...的其他问题
类似的话题JS中split用法和数组中元素的删除 - 大漠回首 - 博客园
JS中split用法
&script&language="javascript"& &&
function&spli(){ &&
&&&&&&&&&datastr="2,2,3,5,6,6";&&& &&
&&var&str=&new&Array(); &&
&&str=datastr.split(",");&&& &&
&&&&for&(i=0;i&str.length&;i++&) &&
&&&&&&&&document.write(str[i]+"&br/&"); &&
spli(); &&
&/script&&&
JS删除数组元素
var arr=[&#8217;a',&#8217;b',&#8217;c'];
若要删除其中的&#8217;b',有两种方法:
1.delete方法:delete arr[1]
这种方式数组长度不变,此时arr[1]变为undefined了,但是也有好处原来数组的索引也保持不变,此时要遍历数组元素可以才用
for(index in arr)
document.write(&#8217;arr[&#8217;+index+&#8217;]=&#8217;+arr[index]);
这种遍历方式跳过其中undefined的元素
* 该方式IE4.o以后都支持了
2.数组对象splice方法:arr.splice(1,1);
这种方式数组长度相应改变,但是原来的数组索引也相应改变
splice参数中第一个1,是删除的起始索引(从0算起),在此是数组第二个元素
第二个1,是删除元素的个数,在此只删除一个元素,即&#8217;b';
此时遍历数组元素可以用普通遍历数组的方式,比如for,因为删除的元素在
数组中并不保留
* 该方法IE5.5以后才支持
值得一提的是splice方法在删除数组元素的同时,还可以新增入数组元素
比如arr.splice(1,1,&#8217;d',&#8217;e'),d,e两个元素就被加入数组arr了
结果数组变成arr:&#8217;a',&#8217;d',&#8217;e',&#8217;c&#8217;《快乐码农》程序员专属期刊,定期推送互联网上的优秀内容。
立即关注程序员俱乐部微博
扫扫二维码,我们为您推送最新技术文章和码农网最新动态。
如果本站对你有帮助,请在百度口碑中为我们点赞。
1、concat() 连接两个或更多的数组
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
1 &script type="text/javascript"&
var arr = [1, 2, 3];
var arr1 = [11, 22, 33];
document.write(arr.concat(4, 5, arr1));
5 &/script&
输出结果:
1,2,3,4,5,11,22,33
把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
1 &script type="text/javascript"&
var arr = ['item 1', 'item 2', 'item 3'];
var list = '&ul&&li&' + arr.join('&/li&&li&') + '&/li&&/ul&';
4 &/script&
list结果:
&#8216;&ul&&li&item 1&/li&&li&item 2&/li&&li&item 3&/li&&/ul&&#8217;
这是迄今为止最快的方法!使用原生代码(如 join()),不管系统内部做了什么,通常比非原生快很多。——James Padolsey,
3、pop() 删除并返回数组的最后一个元素
pop()方法将删除数组的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。
如果数组已经为空,则pop()不改变数组,并返回undefined值
1 &script type="text/javascript"&
var arr = ["George", "John", "Thomas"];
document.write(arr + "&br/&");
document.write(arr.pop() + "&br/&");
document.write(arr);
6 &/script&
输出结果:
George,John,Thomas
George,John
4、push() 向数组的末尾添加一个或更多元素,并返回新的长度
1 &script type="text/javascript"&
var arr = ["George", "John", "Thomas"];
document.write(arr + "&br/&");
document.write(arr.push("James") + "&br/&");
document.write(arr);
6 &/script&
输出结果:
George,John,Thomas
George,John,Thomas,James
5、unshift() 向数组的开头添加一个或更多元素,并返回新的长度
1 &script type="text/javascript"&
var arr = ["George", "John", "Thomas"];
document.write(arr + "&br/&");
document.write(arr.unshift("James") + "&br/&");
document.write(arr);
6 &/script&
输出结果:
George,John,Thomas
James,George,John,Thomas
6、reverse() 颠倒数组中元素的顺序
1 &script type="text/javascript"&
var arr = ["George", "John", "Thomas"];
document.write(arr + "&br/&");
document.write(arr.reverse());
5 &/script&
输出结果:
George,John,Thomas
Thomas,John,George
7、shift() 删除并返回数组的第一个元素
1 &script type="text/javascript"&
var arr = ["George", "John", "Thomas"];
document.write(arr + "&br/&");
document.write(arr.shift() + "&br/&");
document.write(arr);
6 &/script&
输出结果:
George,John,Thomas
John,Thomas
8、slice(start,end) 从某个已有的数组返回选定的元素
请注意,该方法并不会修改数组,而是返回一个子数组
1 &script type="text/javascript"&
var arr = ["George", "John", "Thomas"];
document.write(arr + "&br/&");
document.write(arr.slice(1) + "&br/&"); // 从第一个元素开始截取到 数组结尾
document.write(arr);
6 &/script&
输出结果:
George,John,Thomas
John,Thomas
George,John,Thomas
9、sort() 对数组的元素进行排序
对数组的引用。请注意,数组在原数组上进行排序,不生成副本
该方法默认是按照字符编码(ASCII)的顺序进行排序的
1 &script type="text/javascript"&
var arr = new Array(6);
arr[0] = "John";
arr[1] = "George";
arr[2] = "Thomas";
document.write(arr + "&br/&");
document.write(arr.sort());
8 &/script&
输出结果:
John,George,Thomas
George,John,Thomas
再来看一个例子:
1 &script type="text/javascript"&
var arr = new Array(6);
arr[0] = 10
arr[1] = 5
arr[2] = 40
arr[3] = 25
arr[4] = 1000
arr[5] = 1
document.write(arr + "&br/&");
document.write(arr.sort());
11 &/script&
输出结果:
10,5,40,25,1000,1
我们可以看到,并非是按照我们认为的按数字大小排序,如果想按照数字大小排序,则需要改变默认的排序方式,自行指定排序规则。
1 &script type="text/javascript"&
var arr = new Array(6);
arr[0] = 10
arr[1] = 5
arr[2] = 40
arr[3] = 25
arr[4] = 1000
arr[5] = 1
document.write(arr + "&br/&");
document.write(arr.sort(function (a, b) {return a -}));// 从大到小
11 &/script&
输出结果:
10,5,40,25,1000,1
1,5,10,25,40,1000
如果想要降序排列呢?
将排序规则改为:
function (a, b) {return b &#8211;}
10、splice() 删除元素,并向数组添加新元素
splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改
(1)删除指定范围的数组元素:
1 &script type="text/javascript"&
var arr = new Array(6);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
arr[3] = "James";
arr[4] = "Adrew";
arr[5] = "Martin";
document.write(arr + "&br/&");
arr.splice(2, 3); // 删除第三个元素以后的三个数组元素(包含第三个元素)
document.write(arr);
13 &/script&
输出结果:
George,John,Thomas,James,Adrew,Martin
George,John,Martin
(2)从指定下标开始插入指定元素(元素个数不限):
1 &script type="text/javascript"&
var arr = new Array(6);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
arr[3] = "James";
arr[4] = "Adrew";
arr[5] = "Martin";
document.write(arr + "&br/&");
arr.splice(2, 0, "William","JACK"); // 在第三个元素之前插入"William","JACK"
document.write(arr);
13 &/script&
输出结果:
George,John,Thomas,James,Adrew,Martin
George,John,William,JACK,Thomas,James,Adrew,Martin
(3)删除指定范围的数组元素,并用指定元素替换(元素个数不限):
1 &script type="text/javascript"&
var arr = new Array(6);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
arr[3] = "James";
arr[4] = "Adrew";
arr[5] = "Martin";
document.write(arr + "&br/&");
arr.splice(2,3,"William","JACK"); // 删除第三个元素以后的三个数组元素(包含第三个元素),并用"William","JACK"进行替换
12 document.write(arr);
13 &/script&
输出结果:
George,John,Thomas,James,Adrew,Martin
George,John,William,JACK,Martin将一个数组中2数之和等于某值的元素删除(JS)_小组_ThinkSAAS
将一个数组中2数之和等于某值的元素删除(JS)
将一个数组中2数之和等于某值的元素删除(JS)
&!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.0 Transitional//EN"&
&title& New Document &/title&
&meta name="Generator"content="EditPlus"&
&meta name="Author"content=""&
&meta name="Keywords"content=""&
&meta name="Description"content=""&
&script language="JavaScript"&
// arr:输入数组,num:2个数的和
function test(ar,num) {
var arr = eval(ar);
var compareNum = arr[0];
// 保存2数之和等于num的组合。
var numArr = new Array();
var flag =
for (var i=0;i&=arr.length-1;i++ )
compareNum = arr[i];
for (var j=i+1;j&=arr. j++)
if (compareNum + arr[j] == num)
// 确保compareNum没有在之前已经出现过
for (var k=0;k&numArr.k++ )
if (numArr[k] == i || arr[k] == compareNum)
if (!flag) // 将需要删除的元素的下标放入数组
numArr.push(i);
numArr.push(j);
// 将需要删除的元素用'a'代替
for (var k=0;k&numArr.k++ )
arr.splice(numArr[k],1,'a');
// 存放最终的元素
var resultArr = new Array();
for (var i=0;i&arr.i++ )
if (arr[i] != 'a')
resultArr.push(arr[i]);
alert(resultArr);
&h5&实现:将一个数组中2数之和等于某值的元素删除。&/h5&&br&
&input type='text' value='[1,12,2,2,12,14,14,5,9,0,3,11,11]' style="width:300"id='arr'&
&input type='text' value='14' id='num'&
&input type='button' value='计算' onclick='test(document.getElementById("arr").value,document.getElementById("num").value)'&&br&
用户评论(0)
开发技术学习小组列表
PHP开发框架
缓存Memcache
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
手机客户端
ThinkSAAS接收任何功能的Iphone(IOS)和Android手机的客户端定制开发服务
让ThinkSAAS更好,把建议拿来。
iphone扫码下载客户端

我要回帖

更多关于 数组去重复 的文章

 

随机推荐