JavaScript配列の作成と操作

3825 ワード

配列の作成
1、配列の作成方法は2つあります.
1.1 Arayコンストラクタの作成
var arr = new Array()//       
var arr = new Array(10)//       10   ,            (      )
var arr = new Array('red','blue','green')//      3        
Arayで作成する場合はnew操作子を省略できます. 
1.2文字量の作成
var arr = ['red','blue','green']//      3       
var arr = []//       
var arr = [1,2,]//   ,       2  3    ( IE8        3   )
var arr = [,,,,,]//   ,       5  6    (  )
配列の一般的な方法
2.1元の配列を変更する方法
//push()  
var arr = [1,2];
arr.push(3)//[1,2,3]
//push()          ,         ,        
//  Array.push()  
Array.prototype.push = function() {
    for(var i = 0; i < arguments.length; i++) {
        this[this.length] = arguments[i]
    }
    return this.length
}

//pop()  
var arr = [1,2,3];
arr.pop(3)//[1,2]
//pop()             ,     length ,        

//unshift()  
var arr = [1,2,3];
arr.unshift(4)//[4,1,2,3]
//           ,        

//shift()  
var arr = [1,2,3];
arr.shift()//[2,3]
//shift()                  ,      

//reverse()  
var arr = [1,2,3];
arr.reverse()//[3,2,1]
//reverse()          

//sort()  
var arr = [1,2,3,11,23];
arr.sort()//[1, 11, 2, 23, 3]
//sort       (     ),   sort()           toString()  , 
//        (          ),      ,                 ,
//  sort()          

//sort()     
//1、       ,
//2、    
//     -1 ,        
//     1 ,          
// 0     
//    
function compare(val1, val2) {
    if(val1 > val2) {//    <
        return 1;
    } else {
        return -1
    }
}
//      
function compare(val1, val2) {
   val1 - val2
   //    val2 - val1
}
var arr = [1,32,3,11,23];
arr.sort(compare)//[1,3,11,23,32]

//splice()  
//splice()      splice(      ,       ,          (    ))
var arr = [1,1,2,2,3,3]
arr.splice(1,2)//[1,2,3,3]

var arr = [1,1,2,2,3,3]
arr.splice(2,2,5,5)//[1,1,5,5,3,3]

var arr = [1,2,3,5]
arr.splice(3,0,4)//[1,2,3,4,5]

var arr = [1,2,3,5]
arr.splice(-1,0,4)//[1,2,3,4,5]
//splice()       

splice = function(pos) {
    pos += pos > 0 ? 0 : this.length
}





2.2元の配列を変更しない
//concat()  
var arr = [1,2,3]
var arr1 = [4,5,6]
arr.concat(arr1)//[1,2,3,4,5,6]

//concat()                      ,                     
// ,                   ,         

//slice()  
var arr = [1,2,3,4,5,6]
arr.slice(1)//[2,3,4,5,6]
arr.slice(1,4)//[2,3,4]
arr.slice(5,4)//[]
//slice()                       
//        ,            (        ,      ,          )
//                         ,         
//  slice()           ,                    
//            ,      

//join()  
var arr = [1,2,3] 
arr.join(',')//1,2,3
arr.join('||')//1||2||3
//join()         (String)         ,        undefined        
//IE7        "undefined"     

sortメソッド拡張
//         

var arr = ['gfdgrewgre','gfdsgs','juytkuytkuyr','fdsggtrhtr','gfdsfdsgrbrsbt'];
arr.sort(function(val1,val2) {
   return val1.length - val2.length
})

//  ASCLL   

function retBytes(str) {
    var num = str.length ;
    for (var i = 0; i < str.length; i++) {
        if(str.charCodeAt > 255) {//charCodeAt()              Unicode   。       0 - 65535      。
            num ++
        }
    }
    return num
}

var arr = ['gfdgr  ewgre','    ','uytkuyr','fdsggtrhtr','gf  sbt'];
arr.sort(function(val1,val2) {
   return retBytes(val1) - retBytes(val2)
})

//         
var arr = [1,2,3,4,5,6.7]
arr.sort(function() {
    return Math.random() - 0.5
})
配列の消去方法
//       
Array.prototype.unique = function() {
	var temp = {},
		arr = [],
		len = this.length
	for (var i = 0; i < len; i++) {
		if (!temp[this[i]]) {
			temp[this[i]] = 'aaa'
			arr.push(this[i])
		}
	}
	return arr
}