数组练习题

关于数组的练习题

1、不使用for循环,实现一个方法,传入m n两个参数,返回一个长度为m,每项为n的数组

(1)递归,使用递归也特别注意return的使用。

        function func(m, n) {
            if(typeof m !== "number" && m <= 0){
                return arr;
            }else {
                arr[arr.length] = n;
                return arguments.callee(m-1, n);
            }
        }
        console.log(func(8, 5)); [5, 5, 5, 5, 5, 5, 5, 5]

(2)类数组转数组后,调用map方法。Array.from得到是长度为m值为undefined的数组。不是空数组。

        function func(m, n) {
            var arrObj = {
                length: m
            }
            return Array.from(arrObj).map(() => n);
        }
        console.log(func(8, 5));

其实Array.from,第二个参数是一个处理函数,跟map的效果一样:

        function func(m, n) {
            var arrObj = {
                length: m
            }
            return Array.from(arrObj, () => n);
        }
        console.log(func(8, 5)); [5, 5, 5, 5, 5, 5, 5, 5]

 以下方式得到的还是空数组。调用map方法无效。

        function func(m, n) {
            var arr = [];
            arr.length = m;
            return arr.map(() => n);
        }

2、编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组

var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];

var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
var result = [];
arr.toString().split(",").sort((a,b)=>a-b).map((item,index)=>{
//split的拆分使得数组的每项都是字符串类型
result.indexOf(item) == -1 ? result.push(Number(item)) : "";
});
console.log(result);  [1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 12, 13, 14]

数组的toSting会去处理数组每项及其子项,得到字符串:1,2,2,3,4,5,5,6,7,8,9,11,12,12,13,14,10。toSting就是拆除所有的中括号

split按逗号查分字符串:["1", "2", "2", "3", "4", "5", "5", "6", "7", "8", "9", "11", "12", "12", "13", "14", "10"]。使得每项都成了字符串类型。

3、请把两个数组 ['A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'D1', 'D2'] 和 ['A', 'B', 'C', 'D'],合并为 ['A1', 'A2', 'A', 'B1', 'B2', 'B', 'C1', 'C2', 'C', 'D1', 'D2', 'D']。

var arr1 =  ['A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'D1', 'D2'];
var arr2 = ['A', 'B', 'C', 'D'];
arr2.map((item, index) => {
    arr1.splice((index+1)*2 + index,0,item);
})
console.log(arr1); ["A1", "A2", "A", "B1", "B2", "B", "C1", "C2", "C", "D1", "D2", "D"]

 

你可能感兴趣的:(JavaScript)