JavaScript配列の作成と操作
3825 ワード
配列の作成
1、配列の作成方法は2つあります.
1.1 Arayコンストラクタの作成
1.2文字量の作成
2.1元の配列を変更する方法
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
}