tft每日頭條

 > 生活

 > js獲取對象的值的方法

js獲取對象的值的方法

生活 更新时间:2024-10-05 03:23:58

js獲取對象的值的方法?Math.max 方法不能接收數組,可以使用ES6的…将數組打散,我來為大家科普一下關于js獲取對象的值的方法?以下内容希望對你有幫助!

js獲取對象的值的方法(js對象取值的方法)1

js獲取對象的值的方法

原生Math.max方法

Math.max 方法不能接收數組,可以使用ES6的…将數組打散

const arr = [111, 12, 111, 34, 2, 5, 76];console.log(Math.max(...arr));

當然也可以用apply方法調用

console.log(Math.max.apply(null, arr));

遍曆獲取最大值

遍曆數組,依次比較,保存較大的數,最終得到的就是最大值,這裡使用forEach遍曆

function max2(arr) {    let result = -Infinity;    arr.forEach((item) => {        if (item > result) {            result = item;        }     });    return result;}console.log(max2(arr));

利用排序獲取最大值

将數組使用sort方法排序後,第一個元素或最後一個元素就是最大值,再用shift或者pop方法取出(由升序還是降序決定),值得注意的是這兩個方法會修改原數組,可以使用slice方法複制一份數組再執行彈出元素操作

function max3(arr) {    return arr.sort((a, b) => a - b).slice().pop();}console.log(max3(arr));

使用filter排除小的值

使用filter函數依次取出<自身的元素,當取不出元素即返回的函數長度===零時,就取得了最大值,至于為什麼用遞歸不用循環,用IIFE不用先聲明後使用,嗯,就是單純的不想

(function greater(arr, idx) {    const res = arr.filter(item => item > arr[idx]);    if (res.length === 1) {        console.log(res[0]);        return res[0];    }    greater(arr, idx + 1);})(arr, 0);

使用every判斷自己是否是最大值

使用every的原理和使用filter的原理類似,即當所有元素都<=本身的時候,本身就是最大值

(function greater(arr, idx) {    if (arr.every(item => item <= arr[idx])) {        console.log(arr[idx]);        return arr[idx];    }    greater(arr, idx + 1);})(arr, 0);

使用遞歸模拟數組方法

和上面兩個方法類似,隻是内層用了遞歸和IIFE模拟every

(function outer(arr, i) {    let flag = function inner(arr, j) {        if (arr[j] <= arr[i]) {            return false;        }        return arr.length < j + 1 ? inner(arr, j + 1) : true;    }(arr, 0);    if (flag) {        console.log(arr[i - 1]);        return arr[i - 1];    }    outer(arr, i + 1);})(arr, 0);

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved