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

news2024/9/25 7:19:46

  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);
}







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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ssh工具 向指定的ssh服务器配置公钥

此文分享一个python脚本,用于向指定的ssh服务器配置公钥,以达到免密登录ssh服务器的目的。 效果演示 🔥完整演示效果 👇第一步,显然,我们需要选择功能 👇第二步,确认 or 选择ssh服务器 👇第三步,输入ssh登录密码,以完成公钥配置 👇验证,我们通过ssh登录…

PHP+MySQL组合开发:万能在线预约小程序源码系统 附带完整的搭建教程

近年来&#xff0c;线上服务逐渐成为市场主流。特别是在预约服务领域&#xff0c;用户越来越倾向于选择方便快捷的线上预约方式。传统的预约方式如电话预约和到店预约不仅效率低下&#xff0c;而且在信息传达上存在很大的误差。这使得用户常常需要反复确认&#xff0c;浪费了大…

java实现矩阵谱峰搜索算法

矩阵谱峰搜索算法&#xff0c;也称为矩阵谱峰查找算法&#xff0c;是一种用于搜索二维矩阵中谱峰的方法。谱峰是指在矩阵中的一个元素&#xff0c;它比其上下左右四个相邻元素都大或相等。 该算法的基本思想是从矩阵的中间列开始&#xff0c;找到该列中的最大元素&#xff0c;…

使用ImageJ将Raw格式图片批量转换为JPG

自动方法&#xff1a; 1&#xff0c;创建一个txt文本文档&#xff0c;然后将下面的代码复制粘贴进去。 2&#xff0c;将代码的第一行path修改为你的raw图片所在的路径, 3&#xff0c;第二行out修改为转换后jpg图片存储路径。 4&#xff0c;完成前2步后&#xff0c;如果你是win…

最新ChatGPT商业运营网站程序源码,支持Midjourney绘画,GPT语音对话+DALL-E3文生图+文档对话总结

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

华为云Windows Server服务器下,Node使用pm2-logrotate分割pm2日志,解决pm2日志内存占用过高的问题。

一、简介 PM2 是一个守护进程管理器&#xff0c;它将帮助您管理和保持您的应用程序在线。PM2 入门很简单&#xff0c;它以简单直观的 CLI 形式提供&#xff0c;可通过 NPM 安装。官网地址&#xff1a;https://pm2.keymetrics.io/ 二、问题&#xff1a;pm2日志内存占用过高&am…

《运维人员的未来:IT界的“万金油“如何继续闪耀光芒》

文章目录 每日一句正能量前言35岁被称为运维半衰期&#xff0c;究竟为何&#xff1f;如何顺利过渡半衰期运维的职业发展路径后记 每日一句正能量 凡事顺其自然&#xff0c;遇事处于泰然&#xff0c;得意之时淡然&#xff0c;失意之时坦然&#xff0c;艰辛曲折必然&#xff0c;历…

iOS - 真机调试的新经验

文章目录 获取真机 UDIDPlease reconnect the device.iOS 开发者模式Fetching debug symbols 很久没有在真机运行 iOS 测试了&#xff0c;今天帮忙调试&#xff0c;发现很多东西都变了&#xff0c;有些东西也生疏了&#xff0c;在这里记录下。 获取真机 UDID 创建Profile 需要…

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

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

十八、本地配置Hive

1、配置MYSQL mysql> alter user rootlocalhost identified by Yang3135989009; Query OK, 0 rows affected (0.00 sec)mysql> grant all on *.* to root%; Query OK, 0 rows affected (0.00 sec)mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)2、…

王老师的会计电算化课IT问题集锦

机房无法联网&#xff0c;无法登录扣扣&#xff0c;微信如何截图 Prt Scr 键盘上找到 Print Screen 键&#xff0c;按一下桌面左下角 Win 图标用鼠标点一下&#xff0c;输入 mspaint&#xff0c;或者调出画图在画图软件中按键盘上的 Ctrl V 组合键屏幕图片就贴到了画图软件里…

jinja2模板的使用

本章主要介绍在playbook中如何使用jinja2模板。 什么是jinja2模板在jinja2模板文件中写if判断语句在jinja2模板文件中写for循环语句handlers的使用 jinja2模板 可以使用copy模块把本地的一个文件拷贝到远端机器&#xff0c;下面再次复习一下。 本章实验都在/home/bdqn/demo4…

【svn】win11最新svn每天自动化定时update、commit,隐藏窗口,定时脚本编写

本文使用schtasks结合bat脚本实现全自动svn update以及commit操作。执行时隐藏cmd窗口&#xff0c;全自动后台执行。 执行脚本 写脚本参考了网上很多文章&#xff0c;但是这些文章的方法都有问题或者已经失效&#xff0c;比如&#xff1a; 老版本的bat脚本&#xff0c;使用v…

【K8S 基本概念】Kurbernetes的架构和核心概念

目录 一、Kurbernetes 1.1 简介 1.2、K8S的特性&#xff1a; 1.3、docker和K8S&#xff1a; 1.4、K8S的作用&#xff1a; 1.5、K8S的特性&#xff1a; 二、K8S集群架构与组件&#xff1a; 三、K8S的核心组件&#xff1a; 一、master组件&#xff1a; 1、kube-apiserve…

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

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

无经验如何开始开发家具商城小程序

如果你没有开发经验&#xff0c;但是想要创建一个家具商城小程序&#xff0c;那么你可以选择使用一个专业成熟的小程序商城制作平台&#xff0c;例如乔拓云平台。通过这个平台&#xff0c;你可以轻松地创建一个功能完善、外观美观的家具商城小程序。 首先&#xff0c;你需要登录…

【毕业快刊】IF12分,中科院2区,仅50天录用,17天见刊!国人占比第一!

计算机类 • 好刊解读 今天小编带来Springer旗下计算机领域高分快刊&#xff0c;如您有投稿需求&#xff0c;可作为重点关注&#xff01;后文有相关领域真实发表案例&#xff0c;供您投稿参考~ 01 期刊简介 Artificial Intelligence Review ✅出版社&#xff1a;Springer ✅…

BUUCTF——Reverse——xor

1、题目 2、工具 Exeinfo PE&#xff1a;查壳工具。IDA&#xff1a;是一款功能强大的反汇编工具&#xff0c;用于分析和逆向工程二进制文件。python&#xff1a;编写自动化脚本。 3、方法 下载压缩包并解压&#xff0c;得到一个没有后缀的文件。 用Exeinfo PE查询该文件是否…

ASP.Net实现商品照片显示(三层架构)

演示功能&#xff1a; 点击启动生成页面 步骤&#xff1a; 1、建文件 下图是三层架构列表&#xff0c;Models里面有模拟数据库中列的类&#xff0c;DAL中有DBHelper和service,BLL中有BllManager文件用于ui界面直接调用&#xff0c;其中img文件用户储存照片&#xff0c;数据库…

代码随想录刷题题Day22

刷题的第二十二天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C Day22 任务 ● 39. 组合总和 ● 40.组合总和II ● 131.分割回文串 1 组合总和 39. 组合总和 思路&#xff1a; 本题没有组合数…