1. 程式人生 > >js面向物件開發 (三)利用js的object物件給js陣列去重

js面向物件開發 (三)利用js的object物件給js陣列去重

<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>123</title>
</style>
</head>
<body>
 
</body>
    <script type="text/javascript" charset='utf-8'>
      
 //js物件陣列特徵 : js中的物件的key是不會重複的
 var obj = new Object();
  obj.name='zhnagsan';
  alert(obj.name);//輸出zhangsan
  obj.name='lisi';
  alert(obj.name);//輸出list
  
  //基於此特徵,可以完成陣列中的重複資料
  //1.先把陣列轉化為js物件  2.把陣列中的值作為物件中的key 3.把此物件,還原為陣列
  
  // js  定義一個數組
  var newArr = [1,2,3,4,5,6,7,8,4,3,2,4,5,6,4,2];
  
  //將js中的陣列arr轉換為物件
  var arrsToObject = function(arr){
var obj = {};//建立私有物件

//遍歷arr
for(var i = 0 , j = arr.length ; i < j ; i++ ){
obj[arr[i]] = true;
}
return obj;
  }
  
  //將js中的物件轉換為陣列
  var objectToArr = function(obj){
  var arr= [];
  for( var attr in obj){
if(obj.hasOwnProperty(attr)){
arr.push(attr);
}
  }
  return arr;
  }
  
  var unique = function(newArr){
return objectToArr(arrsToObject(newArr));
  }
  
  alert(unique(newArr));//輸出1,2,3,4,5,6,7,8
  
    </script>
</html>