js对象、数组知识点总结
1、对象
描述一个学生信息 : var sname=’’ sex =’’ age=’’ score=’’ …
对象是一个整体 ,用来描述一个事物的所有信息
比如 定义一个对象 描述一个学生信息 :
说明 : 键名命名方式 类似 标识符规范 值可以是任意数据类型
所有的对象都可以有属性 或 方法
属性 : 描述事物特征 名称
方法 : 描述事物行为 动词
获取对象的信息 :
属性值获取 : 对象.属性 或者 对象[“属性”]
方法的调用 : 对象.方法名()
2、构造函数
使用new关键字创建对象的函数 就是构造函数
3、数组
定义:数组用来存放多个数据 这些数据可以是不同的数据类型,一般一个数组中存放的数据类型是一致 数组理解一个容器
定义一个数组 :
var arr = []; 是一个空数组
var arr = [23,5,6,7,8];定义一个存放整数值的数组
var arr = [“orange”,“red”,“green”];定义一个存放字符串值的数组
var arr = new Array();是一个空数组
var arr = new Array(3); 如果括号中是一个整数值,这个整数代表数组的长度
var arr = new Array(3,6); 定义一个存放两个数值的数组
数组长度获取 : length
数组取值 :数组名[下标] 下标从0开始 最大下标 数组.length-1,arr[ i ]
js数组的特点 : 长度是可变的
数组遍历(循环):
for… for( var 变量 in 对象 ){ }
for…in
特点 :
a、只能遍历对象
b、下标的类型是string
c、没有循环条件 自动取出下标
while
do…while
快速清空一个数组 :
arr = [];
arr.length = 0;
扩展关键字 : instanceof 判断一个对象属于哪一个构造函数 例如 : 判断一个对象是否是一个数组 数组 instanceof Array
//实例:计算学生成绩
//定义一个数组 存放6个学生成绩 计算学生平均成绩 var arrScore = [ 89 ,96 ,82 , 72 ,66,68] //先计算所有成绩之和 var sum = 0; for ( var i = 0 ; i < arr.length ; i++){ sum += arrScore[i] } var avg = ( sum / arrScore.length.toFixed(2)); console.log("平均成绩:" + avg)
4、数组的操作方法
数组尾部操作 :
push() 向数组的尾部添加一个或多个数据 arr.push(1,78,…) 返回数组新的长度值
pop() 将数组尾部的数据删除 arr.pop() 返回删除的元素
数组头部操作 :
unshift() 向数组的头部添加一个或多个元素 arr.unshift(2,34,…) 返回数组新长度值
shift() 删除数组头部元素 arr.shift() 返回删除的元素
数组中间数据操作(也适用于头尾) : 可以 实现 添加 、 删除、 替换 操作
splice( start , len )删除,表示从start位置处删除指定len 长度的数据
splice( start , len , num1,num2,… ) 第三个参数的个数不固定
如果len的值是0 实现在start位置处添加一个或多个数据
如果len的值不为0 ,实现替换操作(替换过程 : 先删除 后添加 )
上面的五个方法 都会改变原数组
slice(start,end) 截取从start位置到end-1 位置处的数据,返回截取后的数据
var arr = [11,22,3,4,5,6] var brr = arr.slice( 1,3 ); alert( brr ); //22,3
join( 字符 ) 将数组中的数据通过 某个 字符 连接起来 返回一个 字符串 toString()也可以将数组转成字符串
扩展小技巧 : 快速计算 数组中所有数据的和
eval( arr.join("+") );
reverse() 数组的翻转 返回的是翻转后的数组 (改变原数组)
concat() 数组连接
//数组操作方法测试
1、join
function fnJoin(){ //将数组转成字符串 var arr = [2,3,4,5,6,7] //var str = arr.toString(); //将数组转成字符串 var str = arr.join(""); //使用某个字符将一个数组拼接成一个字符串 //join可以快速的计算数组中数据的和 console.log( str ); //234567 } fnJoin()
2、slice()
function fnSlice(){ var arr = [2,3,4,5,6,7]; var res = arr.slice( 2 ,6); console.log( res ); //3,4,5,6 } fnSilce()
3、concat
function fnConcat(){ var arr = [2,3,4,5,6,7]; var brr = [1,9,0]; var crr = arr.concat( brr ) console.log( crr ) // 2,3,4,5,6,7,1,9,0 } fnConcat()
4、reverse
function fnReverse(){ var arr = [1,2,3,4,5,6]; arr.reverse(); console.log( arr );//6,5,4,3,2,1 } fnReverse()
5、splice()
function fnSplice(){ var arr = [ 1,2,3,4,5,6,7,8] //arr.splice(2,2,13,17,90); //替换 arr.splice(2,0,13,17,90); //添加 从小标为2位置处添加数据 console.log( arr ); //1,2,13,17,90,3,4,5,6,7,8 } fnSplice()
6、shift、unshift
function fnShiftOrUnshift(){ var arr = [2,3,4,5]; //arr.shift(); arr.unshift( 45,36); console.log( arr ); //45,67,2,3,4,5 } fnShiftOrUnshift()
7、push
function fnPush(){ var arr = [2,3,4,5]; var res = arr.push(56,78); //返回值是新数组 res是返回的数组长度 console.log(res) //2,3,4,5,56,78 } fnPush()
8、pop
function fnPop(){ var arr = [1,2,3,4,5] var res = arr.pop(78,75) console.log( res ) //75,78,1,2,3,4,5 } fnPop()
5、二维数组 由 行 与 列 组成 了解
两个下标
定义二维数组
var arr = [ [ ],[ ],[ ] ]; 定义一个三行的二维数组 列不确定
var arr = [ [1,2,3],[,3,4,5] ]; 两行 三列
6、栈 和 堆 理解
当定义一个变量时,就会在计算机中开辟一块存储空间,用来存放这个变量的值,这个存储空间 就叫做 栈
栈的特点:
有底无顶 后进先出
栈中存放数据的类型是基本类型的
堆 : 堆中存放的是 一个对象的值(多个) 可以存放多个数据
参数传递的方式 :
值传递:
参数之间的改变互不影响
地址传递:
其中一个值发生变化,另一个值也会随之发生变化(一改全改)
//定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出
function fnArr(){ var arr = [ ] //使用循环为数组赋值 for ( var i = 1 ; i <= 30 ; i++){ arr.push( 2 *i ) } var brrAvg = [ ];//用于存储每5个数的平均数 var sum = 0 ; for (var i = 0 ; i < arr.length ; i++){ sum += arr[i]; if( i % 5 == 4){ brrAvg.push( sum / 5); sum = 0 } } } fnArr()
//定义一个含有10个元素的数组,任意输入一个数,判断是否存在,如果存在,就删除这个数
function arrDelNum( arr , num ){
for( var i = 0 ; i < arr.length ; i++){
if( arr[i] == num){
//删除i位置处的数据
arr.splice( i , 1)
}
}
return arr;
}
//通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角。
//去重的三种方法
//首先定义一个函数 功能是判断某个数在数组中是否存在 存在返回true 否则返回false
function has(arr , num){ //判断num在arr数组中是否存在 for( var i = 0 ; i < arr.length ; i++){ if( arr[i] == num){ return true;//存在 } } return false; //不存在 }
方案一、
1、定义一个空数组,取出原数组的每一个数,判断取出来的这个数在空数组中是否存在,如果不存在,将该数存入空数组
function noRepeat( arr ){ var newArr = [ ]; for ( var i = 0 ; i < arr.length ; i++){ if( !has( newArr , arr[i] )){ newArr.push( arr[i]) } } return newArr }
方案二、
数组先排序,数组相邻的两个数比较,如果前一个数不等于后一个数,就将前一个数存入到空数组中
function noRepeat( arr ){ var newArr = [ ]; for ( var i = 0 ; i < arr.length ; i++){ if ( arr[i] != arr[i+1]){ newArr.push( arr[i] ) } } return newArr; }
方案三、
用数组中的每一个数和后面的作比较,如果相等,就将后面的删除
function noRepeat ( arr ){ for( var i = 0 ; i < arr.length ; i++){ for( var j = i + 1 ; j < arr.length ; j++){ if( arr[i] == arr[j]){ arr.splice(j , 1); j -- } } } return arr }
- JS对象数组去重引申出的知识点
- js 对象和数组的遍历方法总结
- JS面向对象(智能社面向对象知识点总结)
- JS提交对象数组到服务端的方法总结(C#实例)
- js基本知识点总结-----js数组
- JS面向对象(智能社面向对象知识点总结)
- JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
- JS数组API知识点总结
- java和js中遍历数组和对象的总结
- JavaScript第四章知识点总结——JS内置对象 Array Date Math
- js对象知识点总结---第一次记录
- JavaScript第四章知识点总结——JS内置对象 Array Date Math
- js控制json对象、json数组总结
- ajax总结(二):XML对象介绍、找API方法、和JS知识点补充
- java和js中遍历数组和对象的总结
- js数组Array对象常用方法总结
- JS中深拷贝数组、对象、对象数组方法总结
- js总结(一):javascript的类型:基本类型、对象和数组
- js以对象为索引的关联数组
- JS_对象_数组_json使用