python slice start比end小_Python学习第80天(js的数组对象、函数对象)

一、数组对象(Array:类似于Python中的列表、元组的集合)

(一)创建数组对象

Array 对象用于在单个的变量中存储多个值。

语法:

创建方式1:var a=[1,2,3];

创建方式2:new Array(); //创建数组时允许指定元素个数也可以不指定元素个数。

new Array(size);//if 1个参数且为数字,即代表size,not content

初始化数组对象:var cnweek=new Array(7);

cnweek[0]="星期日";

cnweek[1]="星期一";

...

cnweek[6]="星期六";new Array(element0, element1, ..., elementn)//也可以直接在建立对象时初始化数组元素,元素类型允许不同

var test=new Array(100,"a",true);

(二)创建二维数组

var cnweek=new Array(7);for (var i=0;i<=6;i++){

cnweek[i]=new Array(2);

}

cnweek[0][0]="星期日";

cnweek[0][1]="Sunday";

cnweek[1][0]="星期一";

cnweek[1][1]="Monday";

...

cnweek[6][0]="星期六";

cnweek[6][1]="Saturday";

(三)Array对象的属性

var cnweek=new Array(7);

cnweek[0]="星期日";

cnweek[1]="星期一";

cnweek[2]="星期二";

cnweek[3]="星期三";

cnweek[4]="星期四";

cnweek[5]="星期五";

cnweek[6]="星期六";for (var i=0;i

document.write(cnweek[i]+" | ");

}

(四)Array对象的方法

79cecc941de008967ab23298075046ca.png

55ddff004e18190af0c95341a052b289.png

连接数组-join方法(区别于Python中字符串中的join方法,调用方法的主体是数组,而py中是字符串)

//书写格式//x.join(bystr)//使用注解//x代表数组对象//bystr作为连接数组中元素的字符串//返回连接后的字符串//与字符串的split功能刚好相反

var arr1=[1, 2, 3, 4, 5, 6, 7];var str1=arr1.join("-");

alert(str1);//结果为"1-2-3-4-5-6-7"

连接数组-concat方法

//连接数组-concat方法//x.concat(value,...)

var a = [1,2,3];var a = new Array(1,2,3);var b=a.concat(4,5) ;

alert(a.toString());//返回结果为1,2,3

alert(b.toString());//返回结果为1,2,3,4,5

数组排序-reverse sort

//x.reverse()//x.sort()

var arr1=[32, 12, 111, 444];//var arr1=["a","d","f","c"];

arr1.reverse();//颠倒数组元素

alert(arr1.toString());//结果为444,111,12,32arr1.sort();//排序数组元素

alert(arr1.toString());//结果为111,12,32,444

arr=[1,5,2,100];//arr.sort();//alert(arr);//如果就想按着数字比较呢?

functionintSort(a,b){if (a>b){return 1;//-1

}else if(a

}else{return 0}

}

arr.sort(intSort);

alert(arr);functionIntSort(a,b){return a-b;

}

这里面sort引用的两个排序方法,说不清,建议直接记住吧

数组切片-slice

//x.slice(start, end)//使用注解//x代表数组对象//start表示开始位置索引//end是结束位置下一数组元素索引编号//第一个数组元素索引为0//start、end可为负数,-1代表最后一个数组元素//end省略则相当于从start位置截取以后所有数组元素

var arr1=[‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘];var arr2=arr1.slice(2,4);var arr3=arr1.slice(4);var arr4=arr1.slice(2,-1);

alert(arr2.toString());//结果为"c,d"

alert(arr3.toString());//结果为"e,f,g,h"

alert(arr4.toString());//结果为"c,d,e,f,g"

删除子数组

//x. splice(start, deleteCount, value, ...)//使用注解//x代表数组对象//splice的主要用途是对数组指定位置进行删除和插入//start表示开始位置索引//deleteCount删除数组元素的个数//value表示在删除位置插入的数组元素//value参数可以省略

var a = [1,2,3,4,5,6,7,8];

a.splice(1,2);//a变为 [1,4,5,6,7,8]

alert(a.toString());

a.splice(1,1);//a变为[1,5,6,7,8]

alert(a.toString());

a.splice(1,0,2,3);//a变为[1,2,3,5,6,7,8]

alert(a.toString());

数组的进出栈操作(1)

//push pop这两个方法模拟的是一个栈操作//x.push(value, ...) 压栈//x.pop() 弹栈//使用注解//x代表数组对象//value可以为字符串、数字、数组等任何值//push是将value值添加到数组x的结尾//pop是将数组x的最后一个元素删除

var arr1=[1,2,3];

arr1.push(4,5);

alert(arr1);//结果为"1,2,3,4,5"

arr1.push([6,7]);

alert(arr1)//结果为"1,2,3,4,5,6,7"

arr1.pop();

alert(arr1);//结果为"1,2,3,4,5"

数组的进出栈操作(2),和上面的区别就是增加的时候,push和pop是加在后面,而unshift和shift是加在前面

//unshift shift//x.unshift(value,...)//x.shift()//使用注解//x代表数组对象//value可以为字符串、数字、数组等任何值//unshift是将value值插入到数组x的开始//shift是将数组x的第一个元素删除

var arr1=[1,2,3];

arr1.unshift(4,5);

alert(arr1);//结果为"4,5,1,2,3"

arr1. unshift([6,7]);

alert(arr1);//结果为"6,7,4,5,1,2,3"

arr1.shift();

alert(arr1);//结果为"4,5,1,2,3"

总结js的数组特性:

//js中数组的特性

//java中数组的特性, 规定是什么类型的数组,就只能装什么类型.只有一种类型.

//js中的数组特性1: js中的数组可以装任意类型,没有任何限制.

//js中的数组特性2: js中的数组,长度是随着下标变化的.用到多长就有多长.

var arr5 = [‘abc‘,123,1.14,true,null,undefined,new String(‘1213‘),new Function(‘a‘,‘b‘,‘alert(a+b)‘)];/*alert(arr5.length);//8

arr5[10] = "hahaha";

alert(arr5.length); //11

alert(arr5[9]);// undefined*/

二、函数对象(function)

函数的定义:

function 函数名 (参数){?函数体;

function函数名 (参数){

?函数体;return返回值;

}//another way:

var 函数名 = new Function("参数1","参数n","function_body");

虽然由于字符串的关系,第二种形式写起来有些困难,但有助于理解函数只不过是一种引用类型,它们的行为与用Function 类明确创建的函数行为是相同的。

实例:

alert(1);functionfunc1(){

alert(‘hello yuan!‘);return 8}

ret=func1();

alert(ret)var func1=new Function("name","alert(\"hello\"+name);")

func1("yuan")

第二种和第一种的重要区别(注意:js的函数加载执行与python不同,它是整体加载完才会执行,所以执行函数放在函数声明上面或下面都可以):

第二种匿名函数,我们无法在这个函数的语句之前调用该函数,而第一种方式没有问题

Function 对象的 length 属性

如前所述,函数属于引用类型,所以它们也有属性和方法。

比如,ECMAScript 定义的属性length 声明了函数期望的参数个数。

alert(func1.length)

Function 对象的方法

Function 对象也有与所有对象共享的valueOf() 方法和toString() 方法。这两个方法返回的都是函数的源代码,在调试时尤其有用。

alert(void(fun1(1,2)))

函数的调用

functionfunc1(a,b){

alert(a+b);

}

func1(1,2); //3

func1(1,2,3);//3

func1(1); //NaN

func1(); //NaN

//只要函数名写对即可,参数怎么填都不报错.

-------------------面试题-----------

functiona(a,b){

alert(a+b);

}var a=1;var b=2;

a(a,b)

函数的内置对象arguments(参数个数不固定的问题)

functionadd(a,b){

console.log(a+b);//3

console.log(arguments.length);//2

console.log(arguments);//[1,2]}

add(1,2)------------------arguments的用处1 ------------------

functionnxAdd(){var result=0;for (var num inarguments){

result+=arguments[num]

}

alert(result)

}

nxAdd(1,2,3,4,5)//------------------arguments的用处2 ------------------

functionf(a,b,c){if (arguments.length!=3){throw new Error("function f called with "+arguments.length+" arguments,but it just need 3 arguments")

}else{

alert("success!")

}

}

f(1,2,3,4,5)

匿名函数

//匿名函数

var func = function(arg){return "tony";

}//匿名函数的应用

(function(){

alert("tony");

} )()

(function(arg){

console.log(arg);

})(‘123‘)

以上内容为今天所有内容,还比较多、、、、、

原文:https://www.cnblogs.com/xiaoyaotx/p/12907860.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值