日期:2014-05-16  浏览次数:20425 次

JS利用json做去重

像JAVA一样利用容器来去重,尝试了一下,JS代码如下:

<script type="text/javascript">
// 先做一个数组
var str = "1@1@2@3@3@4@4@5@";
var ary = str.split("@");

// 去重的算法
var json = {};
for (var i = 0; i < ary.length; i++) {
    json["a"+ary[i]] = ary[i];
}

// 查看结果
var str2 = "";
for (var key in json) {
    str2 += json[key];
}
alert(str2);
</script>

?

可以改写成为数组去重,比较简单。

1 楼 fashionia 2010-08-23  
这个思路不错
合理的利用了json对象属性会被重写的工作原理
很不错
2 楼 luda 2010-08-24  
其实不应说是 json,就是js对象嘛
3 楼 xiongzhijian51 2010-08-24  
嘿..效率问题
4 楼 clue 2010-08-24  
JS里面对象可以直接当Hash表用,非常方便,不过只能支持字符串作键值

但需要注意for in循环时,使用hasOwnProperty过滤掉原型中的东西,避免有的JS代码侵入了原型,导致杯具发生…… (加前后缀不如这个直接)
5 楼 niwei 2010-08-25  
思路挺好,不过这个与json关系不大吧,只要是数组都行。
6 楼 shbgreenery 2010-08-25  
好像 1 和 “1” 会被判断为一样的吧。
7 楼 witcheryne 2010-08-25  
没看懂是什么意思?
"1@1@2@3@3@4@4@5@".replace('@', '');不就ok么?
8 楼 mengzhaopeng 2010-08-25  
很好,学习了
9 楼 Andrew1945 2010-08-25  
思路很不错,但是和json没关系,只是js对象的操作撒!
10 楼 aninfeel 2010-08-25  
这年头,连js对象都被称为json了
11 楼 rainsilence 2010-08-25  
思路很好啊。很多大牛都是这样过来的。
12 楼 fallen_lord 2010-08-26  
...............这跟json有啥关系???
13 楼 zjshan 2010-08-26  
思想挺好的。
14 楼 luolonghao 2010-08-26  
这个是JavaScript的Object对象,不是JSON。JSON是和XML、YAML同一个层次的,是一种文本格式,只是它的格式参考了JavaScript语法而已。

--------
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.

http://www.json.org/