JavaScript对象以及数组的运用

Object类型 和 Array类型 的创建方法

1)Array() 和 Object() 不能构造函数

object对象

传统创建对象:

var box = new Object();
box.name = '张浩';
box.age = 21;
box.fun = function(){
return 'run le';   
};

字面量创建对象:

var box = {
name: '张浩',
age : 21,
fun : function(){
 return 'run le'; 
  }
};
alert(box.fun());

另一种创建对象:

var box = new Object({
 name : '张浩',
 age : 21,
 fun : function(){     //要打印方法,要加圆括号。
     return 'run le'; 
   },
 });
 alert(box.fun());
  alert(box);

Array数组

传统创建数组:

var box = new Array();
box[0] = '张浩' ;
box[1] = 21;
alert(box[0]);

字面量创建数组:

var box = [
  12,
  'abc',
  Array[2]=[1,2],
  function(){
    return 10+10;
  }
]
alert(box[3]());

另一种创建数组:

 var box = new Array([
 '张浩'
]);
alert(box[0]);

下标法:

var box = new Array();
box['name']='张浩';
alert(box['name']);

数组的api

1.添加

push():建一个或多个元素添加到数组的末尾,并返回length; unshift():将一个或多个元素添加带数组的开头

2.删除

pop():删除数组中的最后一个元素,特点:改变了原数组,参数:没有参数。
shift():删除数组中的第一个元素,返回值:返回删除的那个元素的值。

3

concat():用于合并两个或多个数组.特点:不改变原数组,返回拼接后的元素。

4

slice(参数1,参数2):截取数组,从参数1开始,截到参数2,但不包含2 如果只给了一个数组,那么这个参数就是开始截取的起始下标
如果参数是负数,通俗的说就是倒着数,截取下标为arr.length+负参数 如果不给参数,就是截取全部,相当于赋值这个数组

5

splice()
删除——可以删除任意数量的项,只需要指定2个参数:要删除的第一项的位置和要删除项的项数。
例如,splice(0,2)会删除数组中的前两项。
插入——可以向指定位置插入任意数量的项,只需要提供3个参数:骑士位置、0(要删除的项数)和要插入的项。
如果要插入多个项,可以再传入第四、第五,一直任意多个项。
例如,splice(2,1,”red”,”green”)会删除当前数组位置2的项,然后再从位置2开始插入字符串“red”和”green”。
替换——可以指向指定位置插入任意数量的项,且同时删除任意数量的项,只需要指定3个指定参数:起始位置、要删除的项数和要插入的任意数量项。
插入的像是不必与删除的项数相等。例如,splice(2,2,”red”,”green”)会删除当前数组位置2的项,然后再从位置2开始插入字符串“red”和“green”。
splice()方法始终都会返回一个数组,该数组中包含从元素数组中删除的项(如果没有删除任何项,则返回一个空数组)。

例字:

<script>
var colors = ["red", "green", "blue"];
var removed = colors.splice(0,1);  //删除第一项
alert(colors);  //green,blue
alert(removed);  //red,返回数组中值包含一项

removed = colors.splice(1, 0, "yellow", "orange");  //从位置1开始插入两项
alert(colors);  //green,yellow,organge,blue
alert(removed);  //返回的是一个空数组

removed = colors.splice(1, 1, "red", "purple");  //插入两项,删除一项
alert(colors);  //green,red,purple,orange,blue
alert(remove);  //yellow, 返回的数组中只包含一项
</script>

6.把数组转换成字符串:

join()使用指定的符号吧各个数组元素连接成字符串
tostring()作用和不传参数时的join一样,默认使用逗号隔开。

7

fill()方法的作用是:使用一个固定值来替换数组中的元素。该固定值可以是字母、数字、字符串、数组等等。fill()方法还有两个可选参数,表示填充的起始位置和结束位置。

例子:

var arr3 = [12,23,34,45,56];
arr3.fill(123);
console.log(arr3)  // [123,123,123,123,123]

在我门学习数组中都会面临两个问题:

1.冒泡
JS冒泡排序
原理:
依次比较相邻的两个值,如果后面的比前面的小,则将小的元素排到前面。依照这个规则进行多次并且递减的迭代,直到顺序正确。

var examp=[8,94,15,88,55,76,21,39];
function sortarr(arr){
    for(i=0;i<arr.length-1;i++){
        for(j=0;j<arr.length-1-i;j++){
            if(arr[j]>arr[j+1]){
                var temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
    }
    return arr;
}
sortarr(examp);
console.log(examp);

解析

两个循环
当i=0的时候,里面的循环完整执行,从j=0执行到j=6,这也就是第一遍排序,结果是将最大的数排到了最后,这一遍循环结束后的结果应该是[8,15,88,55,76,21,39,94]
当i=1的时候,里面的循环再次完整执行,由于最大的数已经在最后了,没有必要去比较数组的最后两项,这也是j<arr.length-1-i的巧妙之处,结果是[8,15,55,76,21,39,88,94]
说到这里,规律就清楚了,每次将剩下数组里面最大的一个数排到最后面,当第一个循环执行到最后的时候,也就是i=6,此时,j=0,只需要比较数组的第一和第二项,比较完毕,返回。

2.去重:
思路:
创建一个新的数组存放结果和创建一个空对象
for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。
说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。

Array.prototype.unique3 = function() {
	var res = [];
	var json = {};
	for (var i = 0; i < this.length; i++) {
		if (!json[this[i]]) {
			res.push(this[i]);
			json[this[i]] = 1;
		}
	}
	return res;
};
var arr = [112, 112, 34, '你好', 112, 112, 34, '你好', 'str', 'str1'];
console.log(arr.unique3());

数组去重有很多种,这种只是利用了函数的表达式去解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值