ES6中Array对象的方法和扩展、string的扩展方法、数组的遍历。(含例题)

简介: 学习ES6中Array对象的方法和扩展、string的扩展方法、数组的遍历。

目录


一、Array对象方法


1.Array.from():将伪数组或可遍历对象转换为真正的数组(字符串,对象,类数组,set,map等)


2.array.find():返回数组符合条件的第一个元素的值(数组与对象)


3.array.findindex():找出符合条件的成员的位置。


4.array.includes():找出某个数组是否包含给定的值。


二、Array扩展


1.array.map()  返回新数组


2. array.filter() 过滤


3.array.reduce() 缩减


4.array.fill() 填充


三、string扩展


1.模板字符串的用法


2.startsWith和endsWith用法


3.repeat字符串重复次数


四、数组的遍历


1.for of遍历数组的值


2.for in 遍历索引


3.for of 遍历对象


4.forEach的用法


五、例题


1.找到一组同学中考试分数及格的第一个同学并输出到页面上。


2.找出大于指定年龄(页面input框接收)的第一个人,并输出这个人的位置。


3.一组人员信息,输出到页面上显示。


4.输出一组人员信息,输出到页面信息如下(姓名,分数,是否及格60分)。


一、Array对象方法


1.Array.from():将伪数组或可遍历对象转换为真正的数组(字符串,对象,类数组,set,map等)

let str = '1234';
const arr1 =Array.from(str);
console.log(arr1);//(4) ['1', '2', '3', '4']
const Arr = {
      2:'a',
      3:'b',
      length:4,
}
console.log(Array.from(Arr));// (4) [undefined, undefined, 'a', 'b']


2.array.find():返回数组符合条件的第一个元素的值(数组与对象)

const arr = [1,2,3,4];//数组
let num = arr.find(item=>item==3);
console.log(num);//3
const arr1 = [    //对象
  {realname:"张三1",age:18},
  {realname:"张三2",age:17},
  {realname:"张三3",age:19},
  {realname:"张三4",age:17},
    ];
console.log(arr1.find(item=>item.age==17));//age: 17 realname: "张三2"


3.array.findindex():找出符合条件的成员的位置。

const arr = [1,2,3,4]; //数组
console.log(arr.findIndex(item=>item==4)); //3
const arrobj = [    //对象
  {realname:"张三1",age:18},
  {realname:"张三2",age:19},
  {realname:"张三3",age:15},
  {realname:"张三4",age:14},
    ]
console.log(arrobj.findIndex(item=>item.age==19)); //1


4.array.includes():找出某个数组是否包含给定的值。

const arr = [1,2,3,4];
console.log(arr.includes(10));//有就返回true 没有就返回false


二、Array扩展


1.array.map()  返回新数组

const arr = [1,2,3,4];
const newarr = arr.map(item=>item+2);
console.log(newarr); //从新输出一个数组,不是改变原的数组


2. array.filter() 过滤

const arr = [1,2,3,4,5,6,7];
const newarr = arr.filter(item=> item%2==0);
console.log(newarr);

3.array.reduce() 缩减

//total:即是初始值又是返回值
//currentValue:当前值
reduce第二个参数指定初始值
const arr = [1,2,3,4,5];
let sum = arr.reduce((total,currentValue)=>{
    return total + currentValue;
},10) //可以指定初始值
console.log(sum);


4.array.fill() 填充

let arr = [1,2,3,4,5,6,7];
  arr.fill('x',1,3);
  console.log(arr);//[1, 'x', 'x', 4, 5, 6, 7]


三、string扩展

1.模板字符串的用法

function demo(){
  return "end";
    }
let es6 = "es6!";
let str = `hello,${es6},${demo()}`;
console.log(str);//hello,es6,end


2.startsWith和endsWith用法

let str = "hello,es6!";
console.log(str.startsWith("hello"));//判断某个字符串前面是否包含hello 有就为true
console.log(str.endsWith("es6!"));//判断某个字符串后面是否包含es6 有就为true


3.repeat字符串重复次数

console.log("hello".repeat(4));//hellohellohellohello


四、数组的遍历


1.for of遍历数组的值

const arr = ["a","b","c","d"];
   for(v of arr){
        console.log(v); //a,b,c,d
}


2.for in 遍历索引

const arr = ["a","b","c","d"];
    for(let k in arr){
     console.log(k); //0,1,2,3
        }


3.for of 遍历对象

 

const Person={realname:'zs',age:20}
   const keys = Object.keys(Person);
   for(let k of keys){
   console.log(`k:${k}`,`v:${Person[k]}`)}; //k:realname v:zs k:age v:20


4.forEach的用法

let arr = [1,2,3,4];
  arr.forEach((item,index)=>{
  console.log(`v:${item},k:${index}`);  
    })  //v:1,k:0  v:2,k:1 v:3,k:2 v:4,k:3


五、例题

1.找到一组同学中考试分数及格的第一个同学并输出到页面上。

<ul class="score"></ul> 
    <hr>
    <h1 class="username"></h1>
    <script>
        let person=[
            {realname:'张三',score:'40'},
            {realname:'李四',score:'40'},
            {realname:'王五',score:'60'},
            {realname:'赵六',score:'90'}
        ]
        let str = '';
        let userName='';
        for(i=0;i<person.length;i++){
            str = str + `<li>姓名:${person[i].realname},分数:${person[i].score}</li>`
        }
        document.querySelector('.score').innerHTML=str;
        userName = person.find(item=>item.score>=60)
        document.querySelector('.username').innerHTML=`姓名:${userName.realname},分数:${userName.score}`
    </script>


2.找出大于指定年龄(页面input框接收)的第一个人,并输出这个人的位置。

<ul class="age"></ul>
    <hr>
    <input type="text" placeholder="请输入年龄" value="" class="mark">
    <input type="button" value="查询" class="btn">
    <h1></h1>
    <script>
        let person=[
            {realname:'张三',age:'15'},
            {realname:'李四',age:'18'},
            {realname:'王五',age:'19'},
            {realname:'赵六',age:'20'}
        ]
        let str = '';
        for(i=0;i<person.length;i++){
            str = str + `<li>姓名:${person[i].realname},分数:${person[i].age}</li>`
        }
        document.querySelector('.age').innerHTML=str;
        btn = document.querySelector('.btn')
        btn.onclick=function(){
            let num;
            input=document.querySelector('.mark').value;//获得输入的值
            num = person.findIndex(item=>item.age==input)//得到下标
            if(num==-1){
            document.querySelector('h1').innerHTML='查无此人';
            }else{
                num++;
            document.querySelector('h1').innerHTML=`位置是${num}`
            }
        }
    </script>


3.一组人员信息,输出到页面上显示。

let arr =[
            {realname:'zs',birthday:'2000 10-5'},
            {realname:'zs',birthday:'2009 10-5'},
            {realname:'zs',birthday:'2001 10-5'},
            {realname:'zs',birthday:'2005 10-5'}
        ]
        let newarr = arr.map((item)=>{
            let newyear = new Date().getFullYear();
            item[`age`]=newyear-item.birthday.slice(0,4)
            return item;
        })
        let newarr1 = arr.filter(item=>item.age>20)
        console.log(newarr);
        console.log(newarr1);


4.输出一组人员信息,输出到页面信息如下(姓名,分数,是否及格60分)。

const person=[
            {realname:'zs1',age:20,score:50},
            {realname:'zs2',age:20,score:70},
            {realname:'zs3',age:20,score:80},
            {realname:'zs4',age:20,score:90}
        ]
    // 使用 for of 将内容显示在网页上
    // let arr='';
    // for(let v of person){
    //      arr =arr+ `<li>姓名:${v.realname},年龄:${v.age}</li>`
    // }
    // document.querySelector('ul').innerHTML=arr;
    let mark='';
    let newarr = person.filter(item=>{
    let rer= item.score>60?'及格':'不及格'
    mark+=`<li>姓名:${item.realname},年龄:${item.age},分数:${item.score},${rer}</li>`
    })
      document.querySelector('ul').innerHTML=mark;


相关文章
|
22天前
|
人工智能 前端开发 JavaScript
拿下奇怪的前端报错(一):报错信息是一个看不懂的数字数组Buffer(475) [Uint8Array],让AI大模型帮忙解析
本文介绍了前端开发中遇到的奇怪报错问题,特别是当错误信息不明确时的处理方法。作者分享了自己通过还原代码、试错等方式解决问题的经验,并以一个Vue3+TypeScript项目的构建失败为例,详细解析了如何从错误信息中定位问题,最终通过解读错误信息中的ASCII码找到了具体的错误文件。文章强调了基础知识的重要性,并鼓励读者遇到类似问题时不要慌张,耐心分析。
|
24天前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
|
5天前
|
JavaScript 前端开发 开发者
|
1月前
|
存储 JavaScript 前端开发
JavaScript Array(数组) 对象
JavaScript Array(数组) 对象
25 3
|
1月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
|
2月前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
36 0
java基础(13)String类
|
24天前
|
Java
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
47 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
|
20天前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
21 2
|
23天前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
17 1
|
26天前
|
数据可视化 Java
让星星月亮告诉你,通过反射创建类的实例对象,并通过Unsafe theUnsafe来修改实例对象的私有的String类型的成员属性的值
本文介绍了如何使用 Unsafe 类通过反射机制修改对象的私有属性值。主要包括: 1. 获取 Unsafe 的 theUnsafe 属性:通过反射获取 Unsafe类的私有静态属性theUnsafe,并放开其访问权限,以便后续操作 2. 利用反射创建 User 类的实例对象:通过反射创建User类的实例对象,并定义预期值 3. 利用反射获取实例对象的name属性并修改:通过反射获取 User类实例对象的私有属性name,使用 Unsafe`的compareAndSwapObject方法直接在内存地址上修改属性值 核心代码展示了详细的步骤和逻辑,确保了对私有属性的修改不受 JVM 访问权限的限制
48 4