初级数组去重的问题

异域风景 2011-12-15 07:40:41
window.onload=function(){
var a = ["dsa",12,3,"dsa","ad","df","ad"];
var ob = [];
for(i=0;i<a.length;i++){
for(j=0;j<ob.length;j++){
if(a[i]!==ob[j]){
ob.push(a[i]);
}
}
}

alert(ob);
}
学js不久 为什么我这个数组去重最后弹出的是空值呢?希望得到帮助,谢谢各位
...全文
177 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
EEXXTTJJSS 2011-12-16
  • 打赏
  • 举报
回复
o={}主要控制数组a中重复数据
a[i] 比如dsa
如果o['dsa']存在不往b中添加元素
如果不存在就赋一个值比如true(不为false,null,undefined,'',0即可),然后将‘dsa’存入b中。
异域风景 2011-12-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 root_lee 的回复:]
JScript code

var a = ["dsa",12,3,"dsa","ad","df","ad"],o={},b=[];
for(var i=0,l=a.length; i < l; i++){
if(!o[a[i]]){
b.push(a[i]);
o[a[i]] = true;
}
}
alert(b);


……
[/Quote]


请问谁能帮忙解释一下他这里为什么要新建一个o={}的空对象,然后判断条件if(![a[i]])是什么意思呢?谢谢
hch126163 2011-12-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 root_lee 的回复:]

JScript code
var a = ["dsa",12,3,"dsa","ad","df","ad"],o={},b=[];
for(var i=0,l=a.length; i < l; i++){
if(!o[a[i]]){
b.push(a[i]);
o[a[i]] = true;
}
}
alert(b);


很久没出来打酱油了……
[/Quote]

+++

ahopedog 2011-12-16
  • 打赏
  • 举报
回复
window.onload=function(){
var a = ["dsa",12,3,"dsa","ad","df","ad"];
var ob = [];

for(i=0;i<a.length;i++){

var found = false;
for(var j=0; j<ob.length; j++){
if(a[i] == ob[j]){
found = true;
break;
}
}

if(!found)
ob.push(a[i]);


}
}

alert(ob);
}
Mr-Jee 2011-12-15
  • 打赏
  • 举报
回复
许久没见了,头像都换了啊。
这个方法不错。[Quote=引用 8 楼 root_lee 的回复:]

JScript code
var a = ["dsa",12,3,"dsa","ad","df","ad"],o={},b=[];
for(var i=0,l=a.length; i < l; i++){
if(!o[a[i]]){
b.push(a[i]);
o[a[i]] = true;
}
}
alert(b);


很久没出来打酱油了……
[/Quote]
root_lee 2011-12-15
  • 打赏
  • 举报
回复
var a = ["dsa",12,3,"dsa","ad","df","ad"],o={},b=[];
for(var i=0,l=a.length; i < l; i++){
if(!o[a[i]]){
b.push(a[i]);
o[a[i]] = true;
}
}
alert(b);


很久没出来打酱油了
Mr-Jee 2011-12-15
  • 打赏
  • 举报
回复
var a = ["dsa", 12, 3, "dsa", "ad", "df", "ad"];
var reg = /(\b[^,]+\b)(?=,([^,]+,)*\1\b)/g;
var ob = a.join(',').replace(reg, '').replace(/^,|,$/g,'').split(/,+/);
alert(ob);


打酱油先
p2227 2011-12-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhanghuwoaini 的回复:]

我想问下 你们两位都有这样的代码:
var flag = true;
var CompareTime = false;

这个到底在代码里是什么用呢? 希望能帮忙回答一下 谢谢
[/Quote]用来标识是否需要插入数组的元素,你的原代码每一个二重循环里面都插入一次代码就重复了,反正就是逻辑的问题了,不自己理解别人也很难说清。你用开发人员工具或者firebug单步调试吧。
异域风景 2011-12-15
  • 打赏
  • 举报
回复
意思就是为什么要声明一个 这样的布尔变量 然后为什么在写循环的时候都引入这行布尔变量的代码?谢谢
异域风景 2011-12-15
  • 打赏
  • 举报
回复
我想问下 你们两位都有这样的代码:
var flag = true;
var CompareTime = false;

这个到底在代码里是什么用呢? 希望能帮忙回答一下 谢谢
p2227 2011-12-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hetengfei_ 的回复:]

p2227先了
不过小弟也做出来了!
请看:
HTML code
<html>
<head>
<title></title>

<script type="text/javascript">
window.onload = function() {
var a = ["dsa", 12, 3, "dsa", "ad", "df",……
[/Quote]呵呵,在csdn经常有这种情况:两个或者更多人同时在答题,只是有人回复得快一点而已
hetengfei_ 2011-12-15
  • 打赏
  • 举报
回复
p2227先了
不过小弟也做出来了!
请看:
<html>
<head>
<title></title>

<script type="text/javascript">
window.onload = function() {
var a = ["dsa", 12, 3, "dsa", "ad", "df", "ad", 3];
var ob = [];
var CompareTime = false;
for (var i = 0; i < a.length; i++) {
CompareTime = false;
for (var j = i+1; j < a.length; j++) {
if (a[i] === a[j]) {
CompareTime = true;
}
}
if (!CompareTime) {
ob.push(a[i]);
}
}
alert(ob.join("-"));
}
</script>

</head>
<body>
</body>
</html>
p2227 2011-12-15
  • 打赏
  • 举报
回复
<body>
<script>
var a = ["dsa",12,3,"dsa","ad","df","ad"];
var ob = [];
var flag = true;
ob[0] = a[0];
for(i=1;i<a.length;i++){
for(j=0;j<ob.length;j++){
if(a[i]==ob[j]){
flag = false;

}

}
if(flag){
ob.push(a[i]);
}
flag = true;
}

alert(ob);
</script>

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧