数组的新增方法

目录

一、map

        ①map方法

        ②map类型

二、filter

三 some、every方法

        ①some方法

        ②every方法

四、reduce方法


一、map

        map方法

给数组中的每一个元素进行特出处理后,返回一个新的数组

举例

//单价数组
let prices=[50,80,90]
prices=prices.map((item,index)=>{
      return item+"元"
})
//简写方式
prices=prices.map(item=>item+"元")
console.log(prices)  //(3) ['50元', '80元', '90元']

案例

//在部分应用接口中,会出现一些问题,例如下图中会出现需要更换将XXX替换为www
let movies=[{id:1,name:"逃学威龙",imgUrl:"http://xxx.douban.com/1.jpg"},{id:2,name:"逃学威龙",imgUrl:"http://xxx.douban.com/2.jpg"},{id:3,name:"逃学威龙",imgUrl:"http://xxx.douban.com/1.jpg"}]
movies=movies.map(item=>{        
     item.imgUrl=item.imgUrl.replace("xxx","www") 
//找到数组中的xxx并改为www     
     return item        
})
console.log(movies) 
//输出结果网址的xxx变为www

map类型

map类型为object对象的升级版

二、filter

过滤数组中符合要求的元素,并返回一个新数组

举例:挑选一个数组中大于60 的 并返回成一个新的数组

let scores=[80,59,10,55,90,88]
 //拿到当前及格的人的数组
let arr=scores.filter(item=>{
        if(item>60){  
            eturn true;
        }
})
//简写方式
let arr=scores.filter(item=>item>=60)
console.log(arr)//[80,90,88]

案例

let scores=["中国","英国","日本","俄罗斯"]
let arr=scores.filter(item=>{
            if(item.includes("国")){//判断是否含有国
                return true;
            }
})
console.log(arr)//[中国,英国]

三、some、every方法

①some方法  ---   只要有一个符合条件 就返回true

let scores=[80,49,12,50,69]

let result=scores.every(item=>item>=60)

console.log(result)  /true

②every方法 ---  只要有一个不符合就返回FALSE

let scores=[80,49,12,50,69]

let result=scores.every(item=>item>=60)

console.log(result)//false

一般用于:前端校验器(账号、密码、手机号等)

<body>
    <p>用户名:<input type="text" id="username"></p>
    <p>密码:<input type="text" id="mima"></p>
    <button id="login">登录</button>
</body>
//提交AJAX请求前 ,通常需要所有的校验都通过时
let results=[false,false] //校验结果的数组
username.οnblur=function(){
     results[0]=this.value.length>8
}
 mima.οnblur=function(){
     //长度大于8
     if(this.value.length>8){
           results[0]=true
     }else{
          results[0]=false
     }
     // results[0]=this.value.length>8
}
login.οnclick=function(){
//先判断前期的校验是否都通过
let result=results.every(item=>item=true)
    if(result==true){
        console.log(result+"ajax");                
        }             
}
 

四、reduce方法

将数组中的元素整合,返回一个新的内容

4个参数

prev:上一次操作返回的结果 ,可以设置默认值,如果不设置默认值,那么第一个元素就作为第一个prev

item: 本次操作的元素

index:本次操作元素的索引值

array:当前操作的数组

举例 --  数组求和

 let arr=[20,40,50,21]
 let result=arr.reduce((prev,item,index,array)=>{
           console.log("prev"+prev)//prev20
           // console.log("item"+item)//item40第一个不计入循环,所以是40
           // console.log("index"+index)//index1
           // console.log("array"+array)//[20,40,50,21]
           return prev+item
       })
       console.log(result)//131
 

举例 ---  使用reduce拼接字符串给prev设置默认值:
1.所有元素参加循环
2.确定返回内容

//给每一个数组元素  <li>  百度 </li> <li>腾讯</li>>
let result=arr.reduce((prev,item)=>{
    console.log(prev)
    return prev+"<li>"+item+"</li>"
},"")// 给prev设置默认值:""空字符串
console.log(result)
 

举例 ---  利用reduce实现数组去重
let arr=[“百度”,“腾讯”,“阿里”,“字节”,“阿里”,“腾讯”,“百度”]

let result=arr.reduce((prev,item)=>{
//includes判断是有具有指定元素 有t 没有f
      if(!prev.includes(item)){
         prev.push(item)
      }
      return prev
},[ ])
console.log(result)

举例 --- 统计字符的出现次数返回一个对象 统计每一个字符的出现次数 {a:2,w:3}

let arr=["a","b","a","c","a","c"]
let result=arr.reduce((prev,item)=>{
      if(item in prev){ 
 //if条件 当前属性是否在对象内部
      //找到对应属性值 ++
          prev[item]++
      }else{
          prev[item]=1
      }
        return prev
},{})
console.log(result) //[a:3,b:1,c:2]


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,让我来回答你的问题。你想让我用jq写构造函数、数组新增方法forEach()、filter()方法、some()方法等商品查询案例,来帮助用户按照预设的条件快速查询商品信息,对吗? 首先,我们需要定义一个构造函数来创建商品对象。以下是一个简单的构造函数示例: ``` function Product(name, price, category) { this.name = name; this.price = price; this.category = category; } ``` 接下来,我们可以创建一些商品对象,并将它们存储在一个数组中: ``` var products = [ new Product("iPhone", 1000, "Electronics"), new Product("Macbook", 1500, "Electronics"), new Product("Chair", 50, "Furniture"), new Product("Table", 100, "Furniture") ]; ``` 现在,我们可以使用jQuery的`$.each()`方法来实现我们自己的`forEach()`方法: ``` $.fn.myForEach = function(callback) { return this.each(function(index, element) { callback.call(element, index, element); }); }; ``` 我们可以使用它来迭代`products`数组: ``` $(products).myForEach(function(index, product) { console.log(product.name); }); ``` 接下来,我们可以使用`filter()`方法来筛选商品。以下是一个示例: ``` var filteredProducts = $(products).filter(function(index, product) { return product.price < 100; }); $(filteredProducts).myForEach(function(index, product) { console.log(product.name + ": $" + product.price); }); ``` 最后,我们可以使用`some()`方法来检查是否有符合条件的商品。以下是一个示例: ``` var hasExpensiveProducts = $(products).some(function(index, product) { return product.price > 1000; }); if (hasExpensiveProducts) { console.log("There are expensive products."); } else { console.log("There are no expensive products."); } ``` 以上就是一个简单的商品查询案例的示例代码,希望对你有所帮助。如果你有任何问题,请随时问我!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值