JS练习题+对象(函数封装、数组)

 
function some(ele, arr = []) {
    let flat = false;
	for(let i=0;i<arr.length;i++){
        if(ele === arr[i]){
            flat = true;
            break
            }
        }
        return flat;
 }
let re = some('荔枝', ['苹果', '香蕉', '橘子', '荔枝', '梨子'])
console.log(re) // true
let re1 = some('榴莲', ['苹果', '香蕉', '橘子', '荔枝', '梨子'])
console.log(re1) // false

    // 封装函数返回元素的下标  [1, 5, 10, 22, 8, 7]
    // 1. 封装函数 findIndex,传递2个参数 元素、数组
    function findIndex(ele, arr = []) {
        let index = -1;
     	for(let i =0;i<arr.length;i++){
            if(ele === arr[i]){
                index = i;
                }
            }return index;
    }
    let index1 = findIndex(10, [1, 5, 10, 22, 8, 7])
    console.log(index1) // 2
    let index2 = findIndex(8, [1, 5, 10, 22, 8, 7])
    console.log(index2) // 4
    let index3 = findIndex(88, [1, 5, 10, 22, 8, 7])
    console.log(index3) // -1

 

<script>  
    // 使用逻辑或运算符为y设置默认参数  
    function fn(x, y) {  
        y = y || 0; // 如果y是undefined或假值,则将其设置为0  
        console.log(x + y);  
        return x + y; // 返回数字型的结果  
    }  
      
    fn(1); // 输出:1,因为y是undefined,所以被设置为0  
  </script>

<script>  
    // 使用ES6默认参数  
    function fn(x, y = 0) { // 如果y未传递,则默认为0  
        console.log(x + y);  
        return x + y; // 返回数字型的结果  
    }  
      
    fn(1); // 输出:1,因为y使用了默认值0  
  </script>

优先使用ES6的第二种,第一种容易出问题。

对象相关知识 

在JavaScript中,对象是一种复杂的数据类型,它允许你存储多个值作为一个单独的实体。这些值可以是不同的数据类型,如数字、字符串、布尔值,甚至其他对象或数组。对象在JavaScript中扮演着非常重要的角色,以下是它们的一些主要作用:

  1. 封装数据:对象允许你将相关的数据(属性和方法)封装在一起,形成一个单一的实体。这使得数据更易于管理和维护。
  2. 表示现实世界中的实体:对象可以用来表示现实世界中的实体,如人、车、动物等。每个对象都可以有自己的属性和方法,这些属性和方法描述了该实体的特征和行为。
  3. 实现模块化编程:通过将相关的数据和功能封装在对象中,可以实现模块化编程。这有助于减少代码之间的耦合度,提高代码的可读性和可维护性。
  4. 继承和多态:JavaScript中的对象支持原型链和继承机制,这使得对象可以继承其他对象的属性和方法。这有助于实现代码的重用和扩展性。同时,多态性也使得对象能够根据不同的上下文表现出不同的行为。
  5. 作为函数的返回值或参数:对象可以作为函数的返回值或参数传递,这使得函数能够处理更复杂的数据结构,并在函数之间传递复杂的数据。
  6. 与DOM交互:在Web开发中,JavaScript经常用于与DOM(文档对象模型)交互。DOM本身就是一个对象树,JavaScript对象可以用来表示和操作DOM元素,实现页面的动态效果和交互功能。

function在对象外面叫函数,在对象里面叫方法。

let ming = {
    uname:'小宝',
    uage : 18,
    usex : '男',
    song:function(){
        console.log("唱歌")
        },
    dance:function(){
        console.log("喜欢跳舞");
        }
    }
ming.song()
        

 遍历对象:

对象没有数组一样的length属性,所以无法确定长度

对象里面的无序的键值对,没有规律,不像数组里有规律

        let students = [
            {name:'小栏',age:12,gender:'男',home:'山东'},
            {name:'小话',age:12,gender:'男',home:'山东'},
            {name:'小白',age:13,gender:'女',home:'山东'},
            {name:'小率',age:15,gender:'男',home:'山东'},

        ]
        for(let i=0;i<students.length;i++){
            for(let k in students[i]){
                console.log(students[i][k])
                        }
                    }

内层循环遍历的是students[i]的属性,k是每个学生对象的属性名,students[i][k]是对应的属性值。使用console.log(k + ': ' + students[i][k]),我们可以打印出每个属性的名字和值。

表格渲染:

            let students = [
                { name: '小栏', age: 12, gender: '男', home: '山东' },
                { name: '小话', age: 12, gender: '男', home: '山东' },
                { name: '小白', age: 13, gender: '女', home: '山东' },
                { name: '小率', age: 15, gender: '男', home: '山东' },
            ]
            for (let i = 0; i < students.length; i++) {
                document.write(`
                <tr>
                    <td>${i + 1}</td>
                    <td>${students[i].name}</td>
                    <td>${students[i].age}</td>
                    <td>${students[i].gender}</td>
                    <td>${students[i].home}</td>
                </tr>
                `)
            }

内置对象:

Math数学对象

作用:提供数学方法

console.log(Math.floor(1.1))//1

console.log(Math.ceil(1.1))  //2

console.log(Math.round(-1.5))  //-1

最后一个为四舍五入,可以理解为离谁进取谁。

知识对比:parseInt(1.2)   parseInt('1.2')   parseInt里面可以放字符串

它直接去掉了小数部分

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

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

相关文章

Linux——动静态库的制作及使用与动态库原理

目录 一、静态库 1.静态库的制作 2.静态库的使用 加载静态库方法一&#xff1a;安装头文件与库文件 加载静态库方法二&#xff1a;指定文件目录 二、动态库 1.动态库的制作 2.动态库的使用 方法一&#xff1a;安装到系统中 方法二&#xff1a;软链接 方法三&…

GAMES101 学习 2

Lecture 7&#xff1a;Shading 1(lllumination,Shading and Graphics Pipeline) Visibility / occlusion 解决可见性和遮挡的问题 可见性&#xff0c;Z-buffering Z-Buffer 深度缓存 Idea&#xff1a; Store current min. z-value for each sample (pixel)Needs an additi…

EPSON X1G005441020416 TG2016SMN高精度温补晶振

日本爱普生晶振是全球领先的晶振产品生产商,旗下的温补晶振&#xff08;TXCO&#xff09;是EPSON晶振公司产品中的重要产品线之一,其产品一直跟随产品需求变化,不断的更新,EPSON晶体晶振类产品主要包括32.768K时钟晶体MHz无源晶体,有源晶振,温补晶振等产品,且相对于业界同类厂家…

力扣思路题:最长特殊序列1

int findLUSlength(char * a, char * b){int alenstrlen(a),blenstrlen(b);if (strcmp(a,b)0)return -1;return alen>blen?alen:blen; }

Java后端八股----JVM篇

上图中线程1&#xff0c;2如果资源被抢占了&#xff0c;则程序计数器记录一下执行的行号&#xff0c;等到资源就绪后会从记录的行号继续向后执行。 Java8把静态变量以及常量放到了线程的本地内存原空间中(避免放在堆中不可控)。 &#x1f446;图中第二种情况不太容易出现…

如何让图片放大后清晰度不变?

如何让图片放大后清晰度不变&#xff1f;在数字图像处理领域&#xff0c;保持图片放大后清晰度不变是一项具有挑战性的任务。传统的放大方法往往会导致图像模糊、失真&#xff0c;影响观感质量。然而&#xff0c;随着技术的不断进步&#xff0c;现在已经有了一些先进的方法和算…

代码随想录刷题笔记 Day 52 | 打家劫舍 No.198 | 打家劫舍 II No.213 | 打家劫舍III No.337

文章目录 Day 5201. 打家劫舍&#xff08;No. 198&#xff09;<1> 题目<2> 笔记<3> 代码 02. 打家劫舍 II&#xff08;No. 213&#xff09;<1> 题目<2> 笔记<3> 代码 03.打家劫舍III&#xff08;No. 337&#xff09;<1> 题目<2&g…

【GameFramework框架内置模块】8、文件系统(File System)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a; https://blog.csdn.net/q7…

如何解决网络中IP地址发生冲突故障?

0、前言 本专栏为个人备考软考嵌入式系统设计师的复习笔记&#xff0c;未经本人许可&#xff0c;请勿转载&#xff0c;如发现本笔记内容的错误还望各位不吝赐教&#xff08;笔记内容可能有误怕产生错误引导&#xff09;。 1、个人IP地址冲突解决方案 首先winR&#xff0c;调出…

Centos strema 9 环境部署Glusterfs9

本文档只是创建复制卷&#xff0c;分布式卷&#xff0c;分布式复制卷&#xff0c;纠删卷 操作系统 内核 角色 Ip地址 说明 CentOS Stream 9 x86_64 5.14.0-427.el9.x86_64 客户端 client 192.168.80.119 挂载存储业务机器 CentOS Stream 9 x86_64 5.14.0-427.el9.x8…

Fiddler不仅可以抓包,还可以做接口测试喔

前言 Fiddler最大的优势在于抓包&#xff0c;我们大部分使用的功能也在抓包的功能上&#xff0c;Fiddler做接口测试也是非常方便的。对应没有接口测试文档的时候&#xff0c;可以直接抓完包后&#xff0c;copy请求参数&#xff0c;修改下就可以了。 Composer简介 点开右侧Co…

【推荐系统】NCF神经协同过滤

NCF框架 NCF框架是本文要实现的3个模型的主体结构。 首先是输入层&#xff0c;分别包含两个特征向量 v u v_u vu​和 v i v_i vi​&#xff0c;描述了用户u和物品i。输入仅由一个用户向量和一个物品向量构成&#xff0c;它们分别是以one-hot编码的二值化稀疏向量。 接着是Em…

章节2:单词本该这样记

为什么我们记不住单词&#xff1f; 单词不是被胡编乱造出来的&#xff0c;单词是有规律的&#xff0c;单词是符合人类的逻辑的。 单词实际意思结构意义历史文化 我们要怎么记单词&#xff1f; 掌握单词的结构规律了解与单词有关的历史文化灵活巧计&#xff0c;不要太拘泥于…

MySQL的insert-on-duplicate语句详解

一、insert-on-duplicate语句语法 注意&#xff1a;ON DUPLICATE KEY UPDATE只是 MySQL的特有语法&#xff0c;并不是SQL标准语法&#xff01; INSERT INTO … ON DUPLICATE KEY UPDATE 是 MySQL 中一种用于插入数据并处理重复键冲突的语法。 这个语法适用于在 insert的时候…

MindGraph:文字生成知识图

欢迎来到MindGraph&#xff0c;这是一个概念验证、开源的、以API为先的基于图形的项目&#xff0c;旨在通过自然语言的交互&#xff08;输入和输出&#xff09;来构建和定制CRM解决方案。该原型旨在便于集成和扩展。以下是关于X的公告&#xff0c;提供更多背景信息。开始之前&a…

iOS报错-Command PhaseScriptExecution failed with a nonzero exit code

问题&#xff1a;iOS debug没问题&#xff0c;一打包就报错&#xff1a; Command PhaseScriptExecution failed with a nonzero exit code 解决方法如下&#xff1a; 在项目的Pods目录下&#xff0c;找到Targets Support Files->Pods-xxxx-frameworks.sh 如下&#xff1a…

C语言数组—二维数组

二维数组的创建 //数组创建 int arr[3][4]; //三行四列&#xff0c;存放整型变量 double arr[2][4];二维数组的初始化 我们如果这样初始化&#xff0c;效果是什么样的呢 int arr[3][4] { 1,2,3,4,5,6,7,8,9,10,11,12 };那如果我们不写满十二个呢 int arr[3][4] { 1,2,3,4…

数据可信流通:从运维信任到技术信任

1.数据可信流通概念 "数据可信流通"通常指的是确保数据在不同系统、应用程序或者组织之间的传输和交换过程中的可信性、完整性和安全性。在数据流通的过程中&#xff0c;确保数据的真实性、完整性和保密性是非常重要的&#xff0c;尤其是涉及到敏感信息或者重要数据…

Day21:实现退出功能、开发账号设置、检查登录状态

实现退出功能 将登录凭证修改为失效状态。跳转至网站首页。 数据访问层 不用写了&#xff0c;已经有了updateStatus方法&#xff1b; 业务层 UserService public void logout(String ticket) {loginTicketMapper.updateStatus(ticket, 1);}Controller层 RequestMapping(p…

glib交叉编译

Glib交叉编译 逸一时&#xff0c;误一世。 —— 田所浩二「夏夜银梦」 交叉编译 GLib 涉及到在一个平台上生成能够在另一个平台上运行的目标文件。在这种情况下&#xff0c;我们将会在一台主机&#xff08;通常是开发机器&#xff09;上使用交叉编译工具链来构建 GLib 库&#…