day6数组和对象

day6数组和对象

1.对象
1.数据类型的分类
基本数据类型:
string,number,boolean,unll,undefined
复杂的数据类型
function,object,array....
2.定义对象
赋值式定义对象
var obj = {}
内置构造函数创建对象
var obj = new Object()
3.对象是以键值对的形式来存储数据的
注:键值对:键:值 每一对键值对结束用逗号隔开,最后一个不需要
var obj = {
  name:'jack',
  age:18
}

2.操作对象
//操作对象,就是对对象的增,删,改,查。  
/* 
  1.增:
            点语法:对象.键 = 值 ===>对象.属性 = 属性值
            中空括号语法:对象["属性"] = 属性值
    */
var obj = {};
obj.name="1234";
obj["age"]=18

 /* 
 	2.删:删除数据 delete
     点语法: delete 对象.属性
      中括号语法: delete 对象["属性"]
 */
delete.obj.name;
delete obj ["name"];
 /* 
 3.改:把原有的数据进行修改
     跟增加数据一样,如果对象已经有这个属性,那么就是修改,没有就是添加
     查:获取数据
  */
obj["age"]=20;
/*
   4查:获取数据
   通过遍历,拿到数据
   person没有length属性,所以不能使用for循环
   遍历对象的方法 for in
*/
   var person = {
            name: "余美丽",
            age: 30,
            sex: "女"
        };
for(var i in person){
  // for in 循环的次数,对象有多少个属性救护自循环多少次
  // i 表示对象中每一个属性 并且是一个字符串 i = "name"
  // 属性值:对象.属性  || 对象["属性"]
  // 当遍历对象的时候 ,需要获取 属性值的时候 必须使用中括号语法形式获取
 // console.log(typeof i);
    console.log(person[i]);
}
3.数组
1.数组:复杂数据类型中的一种数据类型
2.定义数组:一系列有序的数据集合
var arr = [];
var arr = new Array();
3.有序:数组都会有索引(都是从0开始的索引)
4. 数据集合:多个数据组成在一起的一个集合
var arr = [10];//数组中有一个值,值为10,长度为1.
var arr =new Array(10);//一个长度为10的空数组
5.想要获取数组中的数据,只能通过索引来获取
var arr =[];
 // 通过索引的形式给 数组中添加数据
arr[0]=10;
arr[1]=20;
console.log(arr)//arr=[10,20]
4.数组的案例

定义一个数组长度为30,向数组中添加 1-30 的值

var arr = new Array(30);
for(var i =0;i<arr.length;i++){
  arr[i]=i+1;//数组长度从1开始
}
console.log(arr);

5. 二维数组
  // 二维数组:数组中有数组,数组中数据是一个数组
        var arr2 = [
            [1, 2, 3, 4, 5],
            [6, 7, 8, 9, 10]
        ];
6.数组求平均值

// 定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。

var arr1 = new Array(30);
for(var i = 0;i<arr1.length;i++){
  arr1[i]=(i+1)*2;
}
//求arr1这个数组中每5个数的平均值,放到新的数组中
var arr2=[];
var sum=0;//求5个数之和
var num=0;//记录arr2的索引
for(var j =;j<arr1.length;j++){
  sum+=arr1[j];
  if((j+1)%5==0){
      // 当满足这个条件的时候吗,说明已经有5个数了,就赢过球这个5个数的平均值
      // sum就是5个数之和 
    arr2[num]=sum/5;
    num++;
    sum=0; //把sum清0 ,需要求另外5个数的平均值
  }
}
console.log(arr2);
7.生成5X5的二维数组打印出左下三角形
var outerArr = [];//最外层的循环
var innerArr = [];//里面的循环
var num = 0; //下标
var k =0;//下标
for(var i =0;i<25;i++){
   // 把每5个数添加到 innerArr中,当innerArr中够5个数之后,那innerArr添加outerArr中,并且把innerArr清空
  // innerArr[i] = i + 1;
innerArr[k]=i+1; //innerArr[0]=1;
  if((i+1)%5==0){
    outerArr[num]=innerArr; //outerArrr[o]=innerArr[o][1];
    num++;
  }
}
console.log(outArr);
//打印左下三角形
  /* 
            1--[0][0]
            6-[1][0] 7 -[1][1]
            1 1 1
            1 1 1 1
            1 1 1 1 1 
    */
for(var i =0;i<outerArr.length;i++){
  for(var j = 0;j<=i;j++){
    document.write(outerArr[i][j]+",")
  }
  document.write("<br>")
}
8.数据在内存中的存储
/*
栈:主要存储的是基本的数据类型和变量
堆:主要存储的是复杂的数据类型,以地址的形式存储
*/
  		var num = 10;
        // 把 num的值 赋值给 num1
        var num1 = num;
        num = 20;
       console.log(num1);//10,
------------------------------------------------------------------
 var arr =[1,2,3];
25---var arr1=arr;
arr[0]='a';
console.log(arr1);//arr1[a,2,3];
//找到栈中arr变量,根据arr的值(地址)找到堆中的数据,进入堆中修改数据。
//栈中arr1这个变量,然后取出他值,
//arr1的值是一个数组地址,根据地址找到堆中数据,把堆中的数据取出来。、
//25行的时候堆中的数据被更改-----
//当有多个变量指向同一个地址的时候,无论哪个变量去修改数据,都会直接修改堆中的值
//其他变量来获取这个地址里面的值的时候,都是得到被修改过后的数据。

9.不同数据类型作为函数参数的区别
var n = 20;
fun(n);
function fun(num){
  //n给num赋值的时候,只是把n的值赋值给num
  num++;
  console.log(num);//21
}
console.log(n);//20
//当我给函数传递一个对象作为参数的时候,会出问题?????
var obj = {
  name;'aaa'
};
fn(obj)
function fn(person){
  person.name='123';
}
console.log(obj)//name:123
/*
obj变量存储在栈中:var obj = xxff11
{name:"aaa"}存储在堆中:以地址的形式存储(xxff11)
fn变量存储在栈中,fn=xxff22
{peson.naem='124';}存储在堆中:以地址形式存储(xxff22)
*/
10.数组的方法

数组的方法:让我们更加快速方便的操作数组

1.push()往数组的最后面添加数据
返回值:添加数据之后的数组长度
2.unfhift()往数组的最前面添加数据
返回值:添加数据之后的数组长度
3.shift()删除数组中第一个数据
返回值:被删除的那个数据
4.pop()删除数组中最后一个数据
返回值:被删除的那个数据
5.splice(index,lengt)截取数据
index:从哪个索引开始
length:截取的长度
原始数组会改变
返回值:一个新数组(被截取的数据)
splice(index,length,value)替换
value 替换的数据,用value来替换被截取的数据
6.slice(index,endindex)截取数据
index:开妈的索引
endIndex:结束的索引(截取出来的数据不包含结束索引的值)
不会改变原始数组
返回值:一个新的数组(截取出来的数据)
7.reverse()反转数组
原始数组会改变
返回值:反转之后的数组
8.concat()合并数组
不会改变原始数组
返回值:合并之后的新数组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值