2 dxw827406 dxw827406 于 2016.04.17 15:00 提问

JavaScript数组值去重,但是返回的类型和原类型不一样, 怎么转换

var arr = [2,1,2,10,2,3,4,1,85,321,3,4,65,10,24];

    function uniq(newarr){
        function toObject(arr) {
            var obj = { };
            for(var i=0 ;i<arr.length ;i++){
                obj[ arr[ i ] ]=true;
            }
            return obj ;
        }
        function keys(obj){
            var arr = [ ] ;
            for(var attr in obj){
                if(obj.hasOwnProperty(attr)){
                arr.push(parseInt(attr));
                }
            }
            return arr;
        }   
        return keys(toObject(newarr));
    }

    console.log(uniq(arr));

2个回答

liu1114846482
liu1114846482   2016.04.17 16:29
已采纳

var arr = [2,1,2,10,2,3,4,1,85,321,3,4,65,10,24];
function onRepeat(){
var json={};
var temArr=[];
for(var i=0;i<arr.length;i++){
(function(n){
json[n]=1;
})(i);
}
for(var key in json){
temArr.push(json[name]);
}
return temArr;
}
搞定

dxw827406
dxw827406 var arr = [2,1,2,10,2,3,4,1,85,321,3,4,65,10,24]; function noRepeat(arr){ var obj = { }; var temarr = [ ] ; for(var i=0 ;i<arr.length ;i++){ obj[ arr[ i ] ]=arr[i]; } for(var attr in obj){ if(obj.hasOwnProperty(attr)){ temarr.push(obj[attr]); } } return temarr; } console.log(noRepeat(arr));
2 年多之前 回复
dxw827406
dxw827406 谢谢 有了思路了
2 年多之前 回复
liu1114846482
liu1114846482 name改成key,写的时候大意了
2 年多之前 回复
liu1114846482
liu1114846482 名字起错了,应该是noRepeat
2 年多之前 回复
qq970973742
qq970973742   2016.04.18 09:45

推薦使用filter()函數.其他都一樣.最好別總是用循環

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
JavaScript学习(二):原始数据类型-字符串、数字、布尔值、null、undefined
JavaScript原始数据类型:字符串、布尔值、数字、null、undefined简介
es6 javascript的map数据类型转换
(1) Map 转为数组 前面已经提过, Map 转为数组最方便的方法, 就是使用扩展运算符(...)。 let myMap = new Map().set(true, 7).set({ foo: 3 }, ['abc']); [...myMap] // [ [ true, 7 ], [ { foo: 3 }, [ 'abc' ] ] ](2) 数组转为 Map 将数组转入 Ma
js数组赋值:不修改原数组,返回新的数组 。
有一个数组arr = [1, 2, 3, 4, 10]。 var str = new Array;str = arr; //这个不是赋值,将数组arr的引用赋给str,所以改变str也会改变arr (js实际创建的str是一个对象);正确赋值: 1、str = [].concat(arr); content用于连接多个数组:arr1.concat(arr2,arr3,。。。。
js中typeof的返回值类型有哪些
js中typeof的返回值类型有哪些
遇到对象类型是Object,实际却是数组的问题
今天用Hibernate的时候写了一条select min(time),max(time) from Table的查询语句,本以为返回的List内是两个Date类型的数据,可是这样的想法却导致了一个ClassCastException          原因是list内实际只有一个对象,并且这个对象是一个Object类型的对象,无论用getClass还是toString,但是按理来讲返回的要么是
一个类如何实现两个接口中同名同参数不同返回值的函数
假设有如下两个接口: public interface IA {     string GetA(string a); } public interface IB {     int GetA(string a); } 他们都要求实现方法GetA,而且传入的参数都是一样的String类型,只是返回值一个是String一个是Int,现在我们要声明一个类X,这个类要同时实现这两个接口
c# list<T> 泛类型数组 传值问题
微软提供了list 类型,表示可通过索引访问的对象的强类型列表。提供用于对列表进行搜索、排序和操作的方法。非常好用,能够按照实际使用的元素个数来动态增加数组长度。可是在传值的时候发现,该类型是引用类型,举个例子 List<int> list1 = new List<int>(); list1.add(1); list1.add(2); list1.add(3); List<List<int>>
C# 不同类型数组之间的转换
string[] strArray = "a,b,c,d,e,f,g".Split(new char[]{ ',' }); int[] intArray; //C# 3.0下用此句 intArray = Array.ConvertAll(strArray, s => int.Parse(s)); //2.0下用以下的语句替换上例。 //intArray = Array.C
toArray(T[] t)方法——将集合转换为同类型数组
/** * 将集合转换为对应类型的数组-- toArray(T[] t) */ private static void CollectionTransformToArray() { //准备集合,注:TreeSet、HashSet、ArrayList、LinkedList都OK Set set= new TreeSet(); se
类型void* 说明了什么样的返回值
void有两种用法: 1.将无返回值的函数定义为void类型,表示函数没有返回值 2.用void*定义指针,这是一个指向非具体数据类型的指针,称为无类型指针,或者通用型的指针变量,一般在使用的时候通过强制转化,可以给其他类型的指针变量赋值。  例如: NULL不是被定义为0,就是被定义为(void*)0,这两种值几乎是相同的。当程序中需要一个指针时,一个纯粹的0或者一个void指针都能自动