您的位置:首页 > Web前端 > JavaScript

一道阿里笔试题-javascript

2016-03-18 13:29 519 查看
不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标?

解法一:递归

(function wallace (i) { return (i < 0) ? [] : wallace(i - 1).concat(i); })(99);
解法二:Array的map方法

Array(100).fill('naive').map(function (v, i) { return i; });

思路分析:

定义和用法
concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
语法
arrayObject.concat(arrayX,arrayX,......,arrayX)
参数 描述
arrayX 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。
返回值
返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。
实例
例子 1
在本例中,我们将把 concat() 中的参数连接到数组 a 中:
<script type="text/javascript">

var a = [1,2,3];
document.write(a.concat(4,5));

</script>
输出:
1,2,3,4,5
例子 2
在本例中,我们创建了两个数组,然后使用 concat() 把它们连接起来:
<script type="text/javascript">

var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"

var arr2 = new Array(3)
arr2[0] = "James"
arr2[1] = "Adrew"
arr2[2] = "Martin"

document.write(arr.concat(arr2))

</script>
输出:
George,John,Thomas,James,Adrew,Martin
例子 3
在本例中,我们创建了三个数组,然后使用 concat() 把它们连接起来:
<script type="text/javascript">

var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"

var arr2 = new Array(3)
arr2[0] = "James"
arr2[1] = "Adrew"
arr2[2] = "Martin"

var arr3 = new Array(2)
arr3[0] = "William"
arr3[1] = "Franklin"

document.write(arr.concat(arr2,arr3))

</script>
输出:
George,John,Thomas,James,Adrew,Martin,William,Franklin

 
The fill() method fills all the elements of an array from a start index to an end index with a static value.

SyntaxEDIT
arr.fill(value[, start = 0[, end = this.length]])
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map#Example:_Mapping_an_array_of_numbers_to_an_array_of_square_roots
callback
 函数会被自动传入三个参数:数组元素,元素索引,原数组本身。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: