牛客网刷题-01

数组实战应用及多种解题思路详解

1、slice() 方法可从已有的数组中返回选定的元素。

语法:arrayObject.slice(start,end)

start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

返回值:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素

递归方法求数组的和:

function sum(arr) {
    var len = arr.length;
    if(len == 0){
        return 0;
    } else if (len == 1){
        return arr[0];
    } else {
        return arr[0] + sum(arr.slice(1));
    }
}

2、 reduce归并
function(total,currentValue, index,arr)

total 必需。初始值, 或者计算结束后的返回值。
currentValue 必需。当前元素
currentIndex 可选。当前元素的索引
arr 可选。当前元素所属的数组对象。

function sum(arr) {
    return arr.reduce(function(prev, curr, idx, arr){
        return prev + curr;
    });
}

3、eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
语法:eval(string)

function sum(arr) {
    return eval(arr.join("+"));
};

二、 splice和slice的区别

splice(index,count):是用来删除 插入 替换用的

1:删除的功能
参数:
index:开始位置的索引
count:要删除元素的个数
返回:返回的是包含被删除元素的数组对象
var arr = [‘a’, ‘b’, ‘c’, ‘d’];
var newArr = arr.splice(2, 1);
console.log(newArr)// [“a”, “b”, “d”]

2:插入功能

splice(index,0,插入的项)
参数
index:插入元素的索引值
例如:
var arr = ['a', 'b', 'c', 'd'];
var newArr = arr.splice(3, 0, 'Pandora');
console.log(arr) // ["a", "b", "c", "Pandora", "d"]

3:替换功能

splice(index,num,value)
index:开始的索引位置
num:删除项的数(如果num为0,就是插入功能)
value:插入的值
返回:返回的是包含被删除的元素的数组对象
var arr = ['a', 'b', 'c', 'd'];
var newArr = arr.splice(3, 2, 'Pandora', '417');
console.log(arr) // ["a", "b", "c", "Pandora", "417"]
console.log(newArr) //["d"]

slice(start,end):是截取用的

参数:

start:开始位置的索引
end:结束位置的索引(但不包含该索引位置的元素)
var arr = ['a', 'b', 'c', 'd'];
var newArr = arr.slice(0, 2);
console.log(newArr)//["a", "b"]
var newLastArr = arr.slice(0); //如果没有第二个参数,截取到的是最后一个元素
console.log(newLastArr)//["a", "b", "c", "d"]

三、push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
语法:arrayObject.push(newelement1,newelement2,…,newelementX)

newelement1 必需。要添加到数组的第一个元素。
newelement2 可选。要添加到数组的第二个元素。
newelementX 可选。可添加多个元素。
返回值:把指定的值添加到数组后的新长度。

<script type="text/javascript">

var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"

document.write(arr + "<br />")
arr.splice(2,0,"William")
document.write(arr + "<br />")

</script>

输出:

George,John,Thomas,James,Adrew,Martin
George,John,William,Thomas,James,Adrew,Martin

四、Array.prototype.filter()
filter也是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。

和map()类似,Array的filter()也接收一个函数。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。
filter()接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身:

var arr = ['A', 'B', 'C'];
var r = arr.filter(function (element, index, self) {
    console.log(element); // 依次打印'A', 'B', 'C'
    console.log(index); // 依次打印0, 1, 2
    console.log(self); // self就是变量arr
    return true;
});


function remove(arr,item){
    return arr.filter(function(ele){
         return ele != item;
    })
}

猜你喜欢

转载自blog.csdn.net/Pandora_417/article/details/89157168