Array.slice()与Array.splice()的返回值类型_基础知识

最近做个练习,用到Array.slice()和Array.splice(),以前没有注意其返回值类型
Array.slice()返回Array -- 一个由原始数组中某一范围的元素构成的数组。
Array.splice()返回Array -- 包含从原始数组中删除的元素的一个数组。
返回的是一个数组,用typeof()看一下是object,这没错!需要提醒大家的是:
当数组元素是数字时,用Array.slice()和Array.splice()取其中某个元素进行大小比较,可得要注意,必须转换
类型,这个很隐蔽,出错后很难查的
object类型不可以用Number()直接转换成number,需要先toString()/8@$
如:

var arr = [0, 1, 2];
var arr1 = [1, 2, 3];
for (var i = 0; i < arr.length; i++) {
trace (arr.slice (i,i+1)+"--"+typeof (arr.slice (i,i+1)));
//output--0--object.....
trace (arr1.slice (i,i+1)+"--"+typeof (arr1.slice (i,i+1)));
//output--1--object....
trace (arr.slice (i,i+1)<arr1.slice (i,i+1));
//output--false,,,,object不可比较大小
trace (arr.slice (i,i+1)>arr1.slice (i,i+1));
//output--false,,,,object不可比较大小
trace (Number(arr.slice (i,i+1))<Number(arr1.slice (i,i+1)));
//output--undefined,,,,object不可用Number()转换类型
trace (Number(arr.slice (i,i+1).toString())<Number(arr1.slice (i,i+1).toString()));
//output--true,先toString()再Number()就可以
}

trace (arr.slice (i,i+1)<arr1.slice (i,i+1));
trace (arr.slice (i,i+1)>arr1.slice (i,i+1));
写成  
trace (arr.slice (i,i+1)[0]<arr1.slice (i,i+1)[0]);
trace (arr.slice (i,i+1)[0]>arr1.slice (i,i+1)[0]);
也可以

时间: 2024-10-30 06:39:25

Array.slice()与Array.splice()的返回值类型_基础知识的相关文章

javaScript array(数组)使用字符串作为数组下标的方法_基础知识

Array是从Object那里继承下.它具备Object所有的功能和特性.下面是Object的情况:新建: var  object  =   new  Object();增加: object[strIndex ]  =  value; (strIndex 为string)删除: delete  object[strIndex ];遍历: for  (  var  strObjIndex  in  object ) object[strObjIndex ];  如下: 复制代码 代码如下: var

JavaScript中的splice()方法使用详解_基础知识

 JavaScript数组的splice()方法改变数组的内容,增加了新的元素,同时消除旧元素.语法 array.splice(index, howMany, [element1][, ..., elementN]); 下面是参数的详细信息:     index : 在该索引开始改变的数组.     howMany : 整数,表示旧数组元素数去除.如果的howmany为0,没有元素被删除.     element1, ..., elementN : 元素添加到数组.如果不指定任何元素,拼接只需删

JavaScript Undefined,Null类型和NaN值区别_基础知识

一 Undefined 类型 只有一种值 undefined 以下三种情况typeof 返回类型为undefined 1. 当变量未初始化时 2. 变量未定义时 3. 函数无明确返回值时(函数没有返回值时返回的都是undefined) undefined 并不等同于未定义的值 typeof 并不真正区分是否是未定义 看以下示例代码: var oTemp; alert(typeof oTemp); // outputs "undefined" alert(typeof oTemp2);/

为JS扩展Array.prototype.indexOf引发的问题及解决办法_基础知识

Array没有indexOf方法,这样在一个数组中查找某个元素的索引时比较麻烦,为了调用方便,于是通过prototype原型扩展了Array.prototype.indexOf(),这样用起来就比较方便了.但是这个自定义的indexOf在对数组进行遍历的时候却出现了问题. 复制代码 代码如下: Array.prototype.indexOf = function(item) {  for (var i = 0; i < this.length; i++) {  if (this[i] == it

slice函数的用法 之不错的应用_基础知识

复制代码 代码如下: slice函数的用法:slice(a, b)    截取 数组 a 到 b 之间的元素组成新数组   截取到的元素为 a, a+1, ..., b-1   删除数组中元素a到元素b的方法是:   合并元素a之前的元素与元素b起的元素;  function Array.prototype.remove(a, b){   return this.slice(0, a).concat(this.slice((b||a)+1));  } 

java反射机制 getreturntype是如何知道方法返回值类型的

问题描述 java反射机制 getreturntype是如何知道方法返回值类型的 各位大神,小弟有一事不明 我们有一个变量,就是方法名 java反射机制 getReturnType()是如何知道我要定义的这个方法的返回值类型. 它怎么知道我要的这个方法应该返回什么值?? 解决方案 java编译后的.class文件里面记录了类的全部信息,包括方法的返回值.参数.异常等.程序运行时,.class文件会被加载到运行时数据区,java反射 机制就是从类型信息中获取装载类解析后的详细信息的. 解决方案二:

函数调用-c语言中函数返回值类型的问题

问题描述 c语言中函数返回值类型的问题 看一道改错题: #include #include #include proc(int k)//很显然根据主调函数和返回值类型知道这里缺少类型 { int n;float s,w,p,q; n=1; s=1.0; while(n<=k){ w=2.0*n; p=w-1.0; q=w+1.0; s=s*w*w/p/q; n++; } return s; } void main(){ system("CLS"); printf("%f

java-Java方法中一个返回值类型为基本数据类型long,return语句可以是一个对象吗

问题描述 Java方法中一个返回值类型为基本数据类型long,return语句可以是一个对象吗 Java方法中一个返回值类型为基本数据类型long,return语句可以是一个对象吗 解决方案 可以返回Long对象 比如 return new Long(3); 解决方案二: long是个值类型

c++-调用C++写的SDK包,所提供的函数位于返回值类型和函数名之间的参数是什么。。

问题描述 调用C++写的SDK包,所提供的函数位于返回值类型和函数名之间的参数是什么.. 如图的"APICALL" 我调用dll时忽略它可以吗.. 解决方案 APICALL 应该只是一个简单的.空的宏定义,调用时可以不用管 它的作用只是标识函数是系统定义的 API 解决方案二: 函数调用约定.描述参数入栈.清栈方式等. 解决方案三: 不可以啊,这是调用约定,导入导出之类东西,错了函数调用出错,或者编译出问题 解决方案四: 如果是你自己写这个DLL 头文件里面的#if 需要抄下来 编写的