JavaScript 数组练习题之实现

JavaScript 数组练习题见这里

** 题 1:查找数组对象中 age 大于 18 对象 **

function filterAdult (arr) {
    var res = [];
    if(Array.isArray(arr)){
        if(arr.filter){// 如果浏览器支持filter
            res = arr.filter(function (each) {
                return each.age > 18;
            })
        } else {
            arr.forEach(function  (each) {
                if(each.age > 18){
                    res.push(each);
                }
            });
        }
    }
    return res;
}

** 题 2:判断数组中是否所有的数字都大于 0 **

function isAllNumPosive (arr) {
    var res = true;
    if(Array.isArray(arr)){
        if(arr.every){
            res = arr.every(function (each) {
                var isPosive = true;
                if(typeof each === 'number' && each < 0){
                    isPosive = false;
                }
                return isPosive;
            });
        } else {
            arr.forEach(function  (each) {
                if(typeof each === 'number' && each < 0){
                    res = false;
                }
            });
        }
    } else {
        throw new TypeError('param is not Array');
    }
    return res;

}

** 题 3:改变传入的数组,将数组中第 n(从 0 开始算 ) 个元素放到数组的开头 **

function putFirst (arr, n) {
    if(Array.isArray(arr)){
        var item = arr.splice(n, 1)[0];
        arr.unshift(item);
    }
}

** 题 4: 将 arguments 对象转换成数组 **

function toArray (arrLikeObj) {
    return [].slice.call(arrLikeObj);
}

** 题 5:将数组中数字内容求和 **

function sum (arr) {
    var res = 0;
    if(Array.isArray(arr)){
        if(arr.reduce){
            res = arr.reduce(function (prev, curr) {
                if(typeof curr === 'number'){
                    return prev + curr;
                }
                return prev;
            }, 0)
        } else {
            arr.forEach(function  (each) {
                if(typeof each === 'number'){
                    res = res + each;
                }
            });
        }
    }
    return res;
}

** 题 6: 将数组元素按 age 字段的值,从小到大排序 **

function sortAge (arr) {
    var res = false;
    if(Array.isArray(arr)){
        res = arr.sort(function (a, b) {
            return a.age < b.age ? -1: 1;
        });
    } else {
        throw new TypeError('param is not Array');
    }
    return res;
}

** 题 7: 将数组元素去重,其中数组元素均为基本类性 **

function uniq (arr) {
    var res = [];
    if(Array.isArray(arr) ){
        arr.forEach(function  (each) {
            if(res.indexOf(each) === -1){
                res.push(each);
            }
        })
    } else {
        throw new TypeError('param is not Array');
    }
    return res;
}
// 或
function uniq (arr) {
    var res = [];
    var cache = {};
    if(Array.isArray(arr) ){
        arr.forEach(function  (each) {
            if(cache[each] === undefined){
                res.push(each);
                cache[each] = true;
            }
        })
    } else {
        throw new TypeError('param is not Array');
    }
    return res;
}

** 题 8: 将数组内容乱序 **

function random(arr) {
    var res;
    if (Array.isArray(arr)) {
        res = arr.sort(function() {
            return Math.random() > 0.5 ? 1 : -1;
        })
    } else {
        throw new TypeError('param is not Array');
    }
    return res;
}

本文遵守创作共享CC BY-NC-SA 4.0协议 网络平台如需转载必须与本人联系确认。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏mathor

File

1733
来自专栏大数据和云计算技术

MongoDB系列13:MongoDB查询操作符说明

1764
来自专栏文渊之博

小议隐式转换引起的问题

隐式转换(Implicit conversion) ,这个情况每个程序员都或多或少的遇到过,这里我结合实际情况简单描述下常见的问题以及如何解决并阐述下原理。 所...

2009
来自专栏聊聊技术

原 初学ACM - 半数集(Half Se

3938
来自专栏北京马哥教育

Awk是什么?一文带运维小白快速掌握Linux Awk用法

作者:a8 Awk、sed与grep,俗称Linux下的三剑客,它们之间有很多相似点,但是同样也各有各的特色,相似的地方是它们都可以匹配文本,其中sed和aw...

3796
来自专栏杨建荣的学习笔记

MySQL数值类型在binlog中需要注意的细节(r12笔记第69天)

MySQL里的数值类型分得很细,光整型数据就有多种数据类型。tinyint,smallint,mediumint,int(integer),还有范围最大...

3437
来自专栏noteless

[二十]JavaIO之StringReader 与 StringWriter

还记得前面说过的CharArrayReader 和 CharArrayWriter吗?

2733
来自专栏数据小魔方

NoSQL学习笔记之——Redis基础

之前练习过一篇NoSQL之Mongodb基础的笔记,这一篇开始练习NoSQL系列的又一重要利器——Redis。 Redis是一个开源的,基于内存并可持久化的日志...

2916
来自专栏java相关

【PL/SQL编程基础】

1304
来自专栏mukekeheart的iOS之旅

Java程序员面试宝典——重要习题整理

1、下面程序的输出结果是() public class Test { public static void main(String[] arg...

2409

扫码关注云+社区

领取腾讯云代金券