javascript笔试题(6) js 数组

今儿搞定了一点数组之类的题。js的数组可真是灵活呦。

来看一看数组的一些函数吧。

1.slice 数组的浅复制

向数组后添加一个元素,返回原数组不变。返回新数组。

    function append(arr, item) {
        var arr2=[];
        arr2=arr.slice(0);
        arr2.push(item);
        return arr2;
    }
    var arr=[1, 2, 3, 4];
    console.log(append(arr,  10));  //[1, 2, 3, 4,10]
    console.log(arr)   //[1, 2, 3, 4]

如果定义 var arr2=arr的话,那么arr2指向了arr的引用。那么arr2改变也会伴随着arr改变。
slice浅复制:arr数组并返回了一个新数组,与原数组没有关系了。

2.splice 数组的增添和删除

实现insert函数 。insert(arr, data, index)。对arr数组在index位置添加data。

 //数组的删除 添加元素  splice
    function insert(arr, item, index) {
        var arr2=arr.concat();
        arr2.splice(index,0,item);
        return arr2;
    }
    //[1,2,'z',3,4]
    console.log(insert([1, 2, 3, 4], 'z', 2));

MDN slice
MDN splice

slice

str.slice(beginSlice[, endSlice])

beginSlice是开始位置
endSlice是结束位置

从开始位置到结束位置复制str,为一个新的数组,原数组不做变化。

splice

array.splice(start, deleteCount[, item1[, item2[, ...]]])

start是开始位置
deleteCount是删除元素的个数
item1-n是添加的n个元素

这里splice函数把原数组改变了,返回的是删除的几个数组成的数组。

3.map

map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。

求数组的平方,返回旧数组。

//    map
    function square(arr) {
       return arr.map(function(index){
           return index*index
       })
    }
    console.log(square([1, 2, 3, 4]));

4.forEach

构建findAllOccurrences(arr, target)函数,对arr输出与target相同的元素的所有位置

 //forEach(data,index)
    function findAllOccurrences(arr, target) {
        var arr2=[];
        for(var i=0;iif(arr[i]===target){
                arr2.push(i);
            }
        }
        return arr2;

    }

哈哈,以后不用一直for循环啦

你可能感兴趣的:(javascript,笔试面试题)