ES5语法数组遍历、字符串、对象新增方法

  ES5数组遍历forEach\filter\some\every\map、字符串trim、对象keys\defineProperty新增方法
  Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。

1. 数组遍历

1.1. forEach()

  forEach相当于增强版的for循环,回调函数有三个参数分别为:每个遍历数组的值,每个遍历数组的索引,数组本身。

    var arr = [1, 2, 3];
    var sum = 0;
    arr.forEach(function (item, index, array) {
        console.log("==1:", item, index, array);
        sum += item;
    })
    arr.forEach(function (item, index) {
        console.log("==2:", item, index);
        sum += item;
    })
    arr.forEach(function (item) {
        console.log("==3:", item);
        sum += item;
    })

结果:
在这里插入图片描述

1.2. map()

  var arr = [1, 2, 3];
    var sum = 0;
    arr.map(function (item) {
        console.log("map-item:", item);
        sum += item;
    });
    console.log("map-sum:",sum);

结果:
在这里插入图片描述

1.3. filter()

  filter() 创建一个新的数组,新数组的元素是通过检查指定数组中符合条件的所有元素,主要用于筛选数组。直接返回一个新的数组。回调函数三个参数:当前项的值,当前项的索引,数组本身。

    //得到大于10
    var arr = [2, 534, 2, 23, 4, 234];
    var newArr = arr.filter(function (item, index, arr) {
        return item > 20
    });
    console.log("大于10:",newArr);
    //得到偶数
    var newArr = arr.filter(function (item, index, arr) {
        return item % 2 === 0;
    });
    console.log("偶数:",newArr);

结果:
在这里插入图片描述

1.4. some()

  some() 判断数组中是否有符合条件的元素,有则返回true,无则返回false。可以用于查找数组中是否有某个特定元素。找到第一个符合条件的元素后,则结束循环,不在执行后面的循环。

    var arr = [10, 20, 30, 40];
    var flag = arr.some(function (item, index, array) {
        return item > 20;
    });
    console.log(flag);
    var flag = arr.some(function (item, index, array) {
        return item < 3;
    });
    console.log(flag);
    var flag = arr.some(function (item, index, array) {
        return item === 30;
    });
    console.log(flag);

结果:
在这里插入图片描述

1.5. every()

  every() 对数组中的每一个元素运行给定的函数,如果数组中每一个元素都能通过回调函数的测试,就会返回true,如果其中有一个元素通过回调函数的测试返回的是false,则返回false。

    var arr = [10, 20, 30, 40];
    var flag = arr.every(function (item, index, array) {
        return item > 20;
    });
    console.log(flag);
    var flag = arr.every(function (item, index, array) {
        return item < 3;
    });
    console.log(flag);
    var flag = arr.every(function (item, index, array) {
        return item === 30;
    });
    console.log(flag);

结果:
在这里插入图片描述

1.6. forEach() 、 some() 、 every()、 filter() 遇到return的区别

  在forEach 里面 return 不会终止迭代;
  在some、every 里面 遇到 return true 就是终止遍历 迭代效率更高;
  filter 里面 return 不会终止迭代;
  如果查询数组中唯一的元素, 用some方法更合适。

		var arr = ['red', 'green', 'blue', 'pink'];
        // 1. forEach迭代 遍历
        // arr.forEach(function(value) {
        //     if (value == 'green') {
        //         console.log('找到了该元素');
        //         return true; // 在forEach 里面 return 不会终止迭代
        //     }
        //     console.log(11);
        // })
        // 如果查询数组中唯一的元素, 用some方法更合适,
        arr.some(function(value) {
            if (value == 'green') {
                console.log('找到了该元素');
                return true; //  在some 里面 遇到 return true 就是终止遍历 迭代效率更高
            }
            console.log(11);
        });
        // arr.filter(function(value) {
        //     if (value == 'green') {
        //         console.log('找到了该元素');
        //         return true; //  // filter 里面 return 不会终止迭代
        //     }
        //     console.log(11);
        // });

2. 字符串

2.1. trim()

  trim() 去除字符串前后两端的空白字符,返回值为一个新的字符串,不会覆盖原来的字符串。

    var str = '   HelloWorld    ';
    console.log(str);
    var str1 = str.trim();
    console.log(str1);

结果:
在这里插入图片描述

3. 对象

3.1. Object.keys()

  Object.keys() 用于获取对象自身所有的属性,类似for in ,返回值为所有属性名组成的数组。

    // 用于获取对象自身所有的属性
    var obj = {
        id: 1,
        pname: '鸿蒙',
        price: 1999,
        num: 2000
    };
    var arr = Object.keys(obj);
    console.log(arr);
    arr.forEach(function(item) {
        console.log(item);
    })

结果:
在这里插入图片描述

3.2. Object.defineProperty()

  Object.defineProperty()定义新属性或修改原有的属性,三个参数:需要操作的对象,需要操作的属性,属性的描述。
  Object.defineProperty(obj, prop,descriptor)
  Object.defineProperty()第三个参数 descriptor说明:以对象形式()书写
  value: 设置属性的值 默认为undefined
  writable:值是否可以重写。truelfalse 默认为false
 &emsp
;enumerable:
目标属性是否可以被枚举。truelfalse 默认为 false
  **configurable:**目标属性是否可以被删除或是否可以再次修改特性truelfalse 默认为false

    // Object.defineProperty() 定义新属性或修改原有的属性
    var obj = {
        id: 1,
        pname: '鸿蒙',
        price: 1999
    };
    // 1. 以前的对象添加和修改属性的方式
    // obj.num = 1000;
    // obj.price = 99;
    // console.log(obj);
    // 2. Object.defineProperty() 定义新属性或修改原有的属性
    Object.defineProperty(obj, 'num', {
        value: 1000,
        enumerable: true
    });
    console.log(obj);
    Object.defineProperty(obj, 'price', {
        value: 9.9
    });
    console.log(obj);
    Object.defineProperty(obj, 'id', {
        // 如果值为false 不允许修改这个属性值 默认值也是false
        writable: false,
    });
    obj.id = 2;
    console.log(obj);
    Object.defineProperty(obj, 'address', {
        value: '华为鸿蒙系统',
        // 如果只为false 不允许修改这个属性值 默认值也是false
        writable: false,
        // enumerable 如果值为false 则不允许遍历, 默认的值是 false
        enumerable: false,
        // configurable 如果为false 则不允许删除这个属性 不允许在修改第三个参数里面的特性 默认为false
        configurable: false
    });
    console.log(obj);
    console.log(Object.keys(obj));
    delete obj.address;
    console.log(obj);
    delete obj.pname;
    console.log(obj);
    Object.defineProperty(obj, 'address', {
        value: '华为鸿蒙系统',
        // 如果只为false 不允许修改这个属性值 默认值也是false
        writable: true,
        // enumerable 如果值为false 则不允许遍历, 默认的值是 false
        enumerable: true,
        // configurable 如果为false 则不允许删除这个属性 默认为false
        configurable: true
    });
    console.log(obj.address);

4. 全部代码

$(function () {
    /**
     * 数组遍历
     */
    //数组遍历-forEach
    forEachData();
    //数组遍历-map
    mapData();
    //数组遍历-filter
    filterData();
    //数组遍历-some
    someData();
    //数组遍历-every
    everyData();
    /**
     * 字符串-trim
     */
    //字符串-trim
    trimData();

    /**
     * 对象
     */
    //对象-Object.keys()
    keysData();
});

/**
 * 数组遍历-forEach
 */
function forEachData() {
    var arr = [1, 2, 3];
    var sum = 0;
    arr.forEach(function (item, index, array) {
        console.log("==1:", item, index, array);
        sum += item;
    })
    arr.forEach(function (item, index) {
        console.log("==2:", item, index);
        sum += item;
    })
    arr.forEach(function (item) {
        console.log("==3:", item);
        sum += item;
    })
}

/**
 * 数组遍历-map
 */
function mapData() {
    var arr = [1, 2, 3];
    var sum = 0;
    arr.map(function (item) {
        console.log("map-item:", item);
        sum += item;
    });
    console.log("map-sum:", sum);
}

/**
 * 数组遍历-filter
 */
function filterData() {
    //得到大于10
    var arr = [2, 534, 2, 23, 4, 234];
    var newArr = arr.filter(function (item, index, arr) {
        return item > 20
    });
    console.log("大于10:", newArr);
    //得到偶数
    var newArr = arr.filter(function (item, index, arr) {
        return item % 2 === 0;
    });
    console.log("偶数:", newArr);
}

/**
 * 数组遍历-some
 */
function someData() {
    var arr = [10, 20, 30, 40];
    var flag = arr.some(function (item, index, array) {
        return item > 20;
    });
    console.log(flag);
    var flag = arr.some(function (item, index, array) {
        return item < 3;
    });
    console.log(flag);
    var flag = arr.some(function (item, index, array) {
        return item === 30;
    });
    console.log(flag);
}

/**
 * 数组遍历-every
 */
function everyData() {
    var arr = [10, 20, 30, 40];
    var flag = arr.every(function (item, index, array) {
        return item > 20;
    });
    console.log(flag);
    var flag = arr.every(function (item, index, array) {
        return item < 3;
    });
    console.log(flag);
    var flag = arr.every(function (item, index, array) {
        return item === 30;
    });
    console.log(flag);
}

/**
 * 字符串-trim
 */
function trimData() {
    var str = '   HelloWorld    ';
    console.log(str);
    var str1 = str.trim();
    console.log(str1);
}

/**
 * 对象-Object.keys()
 */
function keysData() {
    // 用于获取对象自身所有的属性
    var obj = {
        id: 1,
        pname: '鸿蒙',
        price: 1999,
        num: 2000
    };
    var arr = Object.keys(obj);
    console.log(arr);
    arr.forEach(function (item) {
        console.log(item);
    })
}

/**
 * 对象-Object.keys()
 */
function keysData() {
    // Object.defineProperty() 定义新属性或修改原有的属性
    var obj = {
        id: 1,
        pname: '鸿蒙',
        price: 1999
    };
    // 1. 以前的对象添加和修改属性的方式
    // obj.num = 1000;
    // obj.price = 99;
    // console.log(obj);
    // 2. Object.defineProperty() 定义新属性或修改原有的属性
    Object.defineProperty(obj, 'num', {
        value: 1000,
        enumerable: true
    });
    console.log(obj);
    Object.defineProperty(obj, 'price', {
        value: 9.9
    });
    console.log(obj);
    Object.defineProperty(obj, 'id', {
        // 如果值为false 不允许修改这个属性值 默认值也是false
        writable: false,
    });
    obj.id = 2;
    console.log(obj);
    Object.defineProperty(obj, 'address', {
        value: '华为鸿蒙系统',
        // 如果只为false 不允许修改这个属性值 默认值也是false
        writable: false,
        // enumerable 如果值为false 则不允许遍历, 默认的值是 false
        enumerable: false,
        // configurable 如果为false 则不允许删除这个属性 不允许在修改第三个参数里面的特性 默认为false
        configurable: false
    });
    console.log(obj);
    console.log(Object.keys(obj));
    delete obj.address;
    console.log(obj);
    delete obj.pname;
    console.log(obj);
    Object.defineProperty(obj, 'address', {
        value: '华为鸿蒙系统',
        // 如果只为false 不允许修改这个属性值 默认值也是false
        writable: true,
        // enumerable 如果值为false 则不允许遍历, 默认的值是 false
        enumerable: true,
        // configurable 如果为false 则不允许删除这个属性 默认为false
        configurable: true
    });
    console.log(obj.address);
}







本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/269740.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

德勤中国合伙人姚承懿:只是“线上化”的数字化转型不会成功

投资者们都期待超出预期的增长&#xff0c;倾向规避未知风险。当下的宏观经济形势复杂&#xff0c;外部条件多变&#xff0c;那些善于驾驭风险&#xff0c;给市场以确定性的企业&#xff0c;能够得到投资者更多的青睐。 合规与增长是支撑上市公司市值的关键要素。有统计数据显…

GrayLog日志平台的基本使用-docker容器日志接入

1、/etc/docker/daemon.json中加入如下配置并重启服务 [rootlocalhost src]# cat /etc/docker/daemon.json { "registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"], "log-driver": "gelf", "log-opts":…

vscode中使用GitHub Copilot Chat

文章目录 一、什么是Github Copilot Chat二、安装使用三、如何使用1. 聊天功能2. 内联功能 一、什么是Github Copilot Chat GitHub Copilot Chat 由 OpenAI 的 GPT-4 大型多模态模型提供支持&#xff0c;能带来更准确的代码建议、解释和指导。GitHub Copilot Chat 的内联功能可…

售前工程师宝典:整理服务器最全知识点

如何保证服务器可以支持百万用户访问&#xff1f;服务器品牌有哪些&#xff1f;如何选购服务器&#xff1f;对于这些问题&#xff0c;今天我们就一起来看下关于服务器的相关知识。 假如你开发了一个网站或者一个app把他放到服务器上&#xff0c;之后你把它发布到了网上&#x…

ES6学习(五):async和await的使用

async和await是promise的一种语法糖,也就是更简单易懂的写法。 在很多项目中,你会经常看到async和await的配合使用,看到原始的promise写法反而不多,就是因为async-await这种写法是用同步的语法去实现异步的逻辑。 基础使用 原生promise写法 let value nulllet proFn new P…

“关爱长者 托起夕阳无限美好”清峰公益开展寒冬暖心慰问活动

2023年12月23日&#xff0c;陆丰市清峰公益服务中心在陆丰市潭西镇党群服务中心开展爱老敬老寒冬暖心慰问活动。此次活动是陆丰市清峰公益服务中心自11月中下旬“清峰公益 凝聚慈善力量 共创美好生活”项目启动仪式后开展的首次暖心慰问活动&#xff0c;活动还特意为老人们准备…

地图导航测试点总结

地图导航是我们经常使用的工具&#xff0c;能帮助我们指引前进的方向。 接下来&#xff0c;会从功能测试、UI测试、兼容测试、安全测试、网络测试、性能测试、易用性测试、文档和国际化语言测试8个方面来编写地图导航测试用例。 一、功能测试 1. 输入起点和终点&#xff0c;…

松柏之志,下聚百川-松下中国阿里云大数据实践

作者&#xff1a;南宫兰 松下信息系统&#xff08;上海&#xff09;有限公司 数据分析部部长 松下集团在中国及东北亚地区拥有有64家法人公司&#xff0c;员工人数约4万人&#xff0c;业务范围涉及研究开发&#xff0c;养老、铸件、汽车、车载、能源、电池等多个方面&#xff…

【MySQL】:超详细MySQL完整安装和配置教程

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; MySQL从入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. MySQL数据库1.1 版本1.2 下载1.3 安装1.4 客户端连接 &#x1f324;️全篇总…

YOLOv5 目标计数 | 图片上绘制计数结果

修改方法: 只需要改 detect.py for path, im, im0s, vid_cap, s in dataset: 下新增一行 class_counts = {} class_counts[int(c)] = class_counts.get(int(c

vs code 代码统计 插件 (webstorm统计代码)

https://blog.csdn.net/aikudexiaohai/article/details/129367503 安装插件 VS Code Counter使用快捷键 Ctrl Shift P&#xff0c;搜素“VSCodeCounter”&#xff0c;选择 Count lines in directory。 在文件路径搜索框中&#xff0c;补充待统计的目录&#xff0c;如&#x…

我在 VSCode 插件里接入了 ChatGPT,解决了Bug无法定位的难题

作为一名软件开发者&#xff0c;我时常面临着代码中Bug的定位和解决问题。这个过程往往既费时又充满挑战。然而&#xff0c;最近我在我的VSCode插件中接入了ChatGPT&#xff0c;这个决定彻底改变了我处理Bug的方式。 Bug&#xff1a;开发者的噩梦 在开发过程中&#xff0c;遇…

靠一首诗流芳后世的26位诗人

中国古代诗词史上的文人墨客众多&#xff0c;著名的诗词大家也不少&#xff0c;尤其是唐宋以来&#xff0c;可谓是人才辈出&#xff0c;从李白、杜甫到苏轼、辛弃疾&#xff0c;从李清照、朱淑贞到纳兰性德等。 当然&#xff0c;在浩瀚的诗词史上&#xff0c;哪个文人不想名传…

Vscode运行调试文件

文章目录 vscode调试运行流程vscode 执行报错settings.json成功截图 vscode调试运行流程 vscode左侧菜单栏点击运行调试icon&#xff0c;点击菜单右侧栏运行和调试按钮&#xff0c;选择node调试器&#xff0c;js文件行数左边点击添加红色断点&#xff0c;运行当前文件 vscode…

Python-Mac格式转换脚本

一、原因&#xff1a; 将c4:ef:da:12:5c:53 变为 c4ef-da12-5c53 二、代码 import remac_addresses []# Read the file with open(client_list.txt, r) as file:# Read file contents into a listmac_addresses [line.strip() for line in file]# Process and print MAC add…

QA 团队基于 DataLeap 开放平台能力的数据测试实践

背景 &痛点 随着生态体系扩展和业务发展&#xff0c;数据在业务中承担的决策场景越来越多样化&#xff0c;一部分数据已应用在资损、高客诉等高风险场景&#xff0c;因此对数据质量的要求&#xff0c;尤其是高风险场景的质量要求非常之高。但在保障过程中往往面临以下痛点…

基于MPU6050的跌倒检测项目设计

一、背景 随着人口老龄化的不断加剧&#xff0c;老年人的健康和安全问题备受关注。本设计旨在利用STM32单片机与MPU6050传感器相结合&#xff0c;实现基于角度变化的跌倒检测系统。这一系统不仅能够快速、准确地检测老年人是否发生跌倒&#xff0c;还通过整合通信模块实现了实…

Non-Contrastive Unsupervised Learning of Physiological Signals from Video

研究背景 基于相机的生命体评估是一个快速增长的领域&#xff0c;可以在各种设置中进行非接触式健康监测。虽然许多信号避免了人眼的检测&#xff0c;但可见光和红外范围内的视频数据包含由血量和呼吸等生理逻辑振荡引起的微妙强度变化。用于估计心脏脉搏的远程光电容积术&…

外汇天眼:最新监管警告名单更新,远离以下无牌黑户!

监管信息早知道&#xff01;外汇天眼将每周定期公布监管牌照状态发生变化的交易商&#xff0c;以供投资者参考&#xff0c;规避投资风险。如果平台天眼评分过高&#xff0c;建议投资者谨慎选择&#xff0c;因为在外汇天眼评分高不代表平台没问题&#xff01; 以下是监管牌照发生…

到底是前端验证还是后端验证

背景 软件应用研发中&#xff0c; 前端验证还是后端验证这是意识与认知问题。鉴于某些入门同学还不清楚&#xff0c;我们再来看下&#xff1a; 一. 从软件行业来自国外 Q: 前端验证和后端验证都是对同一个数据的验证&#xff0c;有什么区别&#xff1f; A: 二者的目的不同&…