js数组方法考察点详解
2017-09-19 20:08
495 查看
来自“阿里巴巴2017秋招前端笔试题”中的一道笔试题:
将数组 var a=[1,2,3] 变成数组 [4,3,2,1] 下面的方式正确的是?
a.reverse().unshift(4)
a.push(4).reverse()
a.push(4); a.reverse()
a.splice(3,1,4).reverse()
想要做对这道js题目,就要对数组中常用方法的作用和返回值熟悉。下面摘录一下牛客网上的一个回答:
Array对象常用方法中:
连接两个或多个数组
不改变原数组
返回被连接数组的一个副本
2、join()
把数组中所有元素放入一个字符串
不改变原数组
返回字符串
3、 slice()
从已有的数组中返回选定的元素
不改变原数组
返回一个新数组
4、 toString()
把数组转为字符串
不改变原数组
返回数组的字符串形式
删除数组最后一个元素,如果数组为空,则不改变数组,返回undefined
改变原数组
返回被删除的元素
6、 push()
向数组末尾添加一个或多个元素
改变原数组
返回新数组的长度
7、 reverse()
颠倒数组中元素的顺序
改变原数组
返回该数组
8、 shift()
把数组的第一个元素删除,若空数组,不进行任何操作,返回undefined
改变原数组
返回第一个元素的值
9、 sort()
对数组元素进行排序(ascii)
改变原数组
返回该数组
10、 splice()
从数组中添加/删除项目
改变原数组
返回被删除的元素
11、 unshift()
向数组的开头添加一个或多个元素
改变原数组
返回新数组的长度
B选项:push()方法返回新数组的长度,是一个number类型,不是数组,所以不能再用“.”操作符继续执行reverse()方法。错误。
C选项:正确。
D选项:splice()语法:arrayObject.splice(index,howmany,item1,…..,itemX)。
参数:
index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, …, itemX:可选。向数组添加的新项目。
返回值:
Array:包含被删除项目的新数组,如果有的话。
由于a.splice(3,1,4)中的index为3,超过了数组a的下标,所以3后面的1也不会起作用。a.splice(3,1,4)会将4插入到数组a末尾。但splice()返回值是被删除项目的新数组,由于a.splice(3,1,4)并没有删除元素,所以返回的新数组为空,对空数组reverse()还是空。(如果D选项改成a.splice(3,1,4);a.reverse()就正确了。)错误。
所以正确答案为:AC。
请问下面哪种方式可以在不改变原来数组的情况下,拷贝出数组 b ,且满足 b!=a 。例如数组 a 为 [1,2,3] 。
let b=a;
let b=a.slice();
let b=a.splice(0,0);
let b=a.concat();
你的答案是什么?
解析:
A选项 b=[1,2,3] b==a
B选项 b=[1,2,3] b!=a slice()返回一个新数组
C选项 b=[] b!=a splice(0,0)没有删除项目,因此返回空。
D选项 b=[1,2,3] b!=a concat()不改变原数组,返回被连接数组的一个副本。
所以正确答案应该是BD。
将数组 var a=[1,2,3] 变成数组 [4,3,2,1] 下面的方式正确的是?
a.reverse().unshift(4)
a.push(4).reverse()
a.push(4); a.reverse()
a.splice(3,1,4).reverse()
想要做对这道js题目,就要对数组中常用方法的作用和返回值熟悉。下面摘录一下牛客网上的一个回答:
Array对象常用方法中:
不改变原数组:
1、 concat()连接两个或多个数组
不改变原数组
返回被连接数组的一个副本
2、join()
把数组中所有元素放入一个字符串
不改变原数组
返回字符串
3、 slice()
从已有的数组中返回选定的元素
不改变原数组
返回一个新数组
4、 toString()
把数组转为字符串
不改变原数组
返回数组的字符串形式
改变原数组:
5、 pop()删除数组最后一个元素,如果数组为空,则不改变数组,返回undefined
改变原数组
返回被删除的元素
6、 push()
向数组末尾添加一个或多个元素
改变原数组
返回新数组的长度
7、 reverse()
颠倒数组中元素的顺序
改变原数组
返回该数组
8、 shift()
把数组的第一个元素删除,若空数组,不进行任何操作,返回undefined
改变原数组
返回第一个元素的值
9、 sort()
对数组元素进行排序(ascii)
改变原数组
返回该数组
10、 splice()
从数组中添加/删除项目
改变原数组
返回被删除的元素
11、 unshift()
向数组的开头添加一个或多个元素
改变原数组
返回新数组的长度
解析:
A选项:a.reverse()后返回值即数组a变成[3,2,1],再使用unshift()方法在数组开头添加一个4,a数组就变成了[4,3,2,1]。注,unshift()返回新数组的长度,此处为4。正确。B选项:push()方法返回新数组的长度,是一个number类型,不是数组,所以不能再用“.”操作符继续执行reverse()方法。错误。
C选项:正确。
D选项:splice()语法:arrayObject.splice(index,howmany,item1,…..,itemX)。
参数:
index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, …, itemX:可选。向数组添加的新项目。
返回值:
Array:包含被删除项目的新数组,如果有的话。
由于a.splice(3,1,4)中的index为3,超过了数组a的下标,所以3后面的1也不会起作用。a.splice(3,1,4)会将4插入到数组a末尾。但splice()返回值是被删除项目的新数组,由于a.splice(3,1,4)并没有删除元素,所以返回的新数组为空,对空数组reverse()还是空。(如果D选项改成a.splice(3,1,4);a.reverse()就正确了。)错误。
所以正确答案为:AC。
拓展题目
看完了上面的解释,再看看这道题:请问下面哪种方式可以在不改变原来数组的情况下,拷贝出数组 b ,且满足 b!=a 。例如数组 a 为 [1,2,3] 。
let b=a;
let b=a.slice();
let b=a.splice(0,0);
let b=a.concat();
你的答案是什么?
解析:
A选项 b=[1,2,3] b==a
B选项 b=[1,2,3] b!=a slice()返回一个新数组
C选项 b=[] b!=a splice(0,0)没有删除项目,因此返回空。
D选项 b=[1,2,3] b!=a concat()不改变原数组,返回被连接数组的一个副本。
所以正确答案应该是BD。
相关文章推荐
- js数组方法的一道笔试题考察点详解
- JS进阶篇--JS数组reduce()方法详解及高级技巧
- js中array(数组)对象的splice方法的详解
- 详解js模板引擎art template数组渲染的方法
- js/jquery解析json和数组格式的方法详解
- JS查找数组中重复元素的方法详解
- JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
- js/jquery解析json和数组格式的方法详解
- js/jquery解析json和数组格式的方法详解
- 详解JS数组Reduce()方法详解及高级技巧
- JS进阶篇--JS数组reduce()方法详解及高级技巧
- JS数组方法汇总 array数组元素的添加和删除
- JS数组方法汇总
- 数组自带的push方法 分类: 网页编程【html、js】 2009-11-02 20:51 235人阅读 评论(0) 收藏
- JS - String方法详解
- C#数组复制方法详解
- JS数组方法汇总 array数组元素的添加和删除
- JS数组方法汇总 array数组元素的添加和删除
- js 删除数组几种方法
- js的submit()方法详解