发表于: 2023-03-16 20:31:53

0 268





今天的js知识点:

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <meta name="viewport"
       content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Array 常用的方法 </title>
</head>
<body>
<!--    <div></div>-->

   <ul>
       <li>1</li>
       <li>2</li>
       <li>3</li>
   </ul>

   <script>
       // 实例方法 join 数组元素拼接为字符串,返回字符串

       // 实例方法 find 查找元素,返回符合测试条件的第一个数组元素值,如果没有符合条件的则返回 undefined
       // const arr = [5, 12, 8, 130, 44]
       // const found = arr.find(item => item > 10)
       // console.log(found) // 12
       // const arr = [
       //     {
       //         name: '小米',
       //         price: 1999
       //     },
       //     {
       //         name: '华为',
       //         price: 4999
       //     },
       //     {
       //         name: 'vivo',
       //         price: 1999
       //     },
       // ]
       // // const mi = arr.find(function (item) {
       // //     // console.log(item.name)
       // //     // console.log(11)
       // //     return item.name === '华为'
       // // })
       // // console.log(mi)
       // const mi = arr.find(item => item.name === '华为')
       // console.log(mi)

       // 实例方法 every 检测数组所有元素是否都符合指定条件,如果所以元素都通过检测返回 true,否则返回 false
       // const arr = [10, 20, 30]
       // const found = arr.every(item => item >= 10)
       // console.log(found)

       // 实例方法 some 检测数组中的元素是否满足指定条件,如果数组中有元素满足条件返回true 否则返回 false

       //案例
       // const spec = { size: '40cm*48cm', color: '黑色'}
       // // console.log(Object.values(spec))
       // // 2、转换为字符串 join('/')
       // // console.log(Object.values(spec).join('/')) //把数组根据分隔符转换为字符串
       // document.querySelector('div').innerHTML = Object.values(spec).join('/')


       // 把伪数组 转换为真数组 静态方法 Array.from()
       const lis = document.querySelectorAll('ul li')
// console.log(lis)
       // lis.pop()
       const liss = Array.from(lis)
liss.pop()
console.log(liss)
</script>

</body>
</html>


<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <meta name="viewport"
       content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
</head>
<body>

   <script>
       //1 split() 方法使用指定的分隔符字符串将一个String对象分割成子字符串数组,
       // 以一个指定的分割字串来决定每个拆分的位置。
       // split 把字符串 转换为 数组 和 join() 相反
       // const str = 'pink,red'
       // // console.log(str)
       // const arr = str.split(',')
       // console.log(arr)
       //
       // const str1 = '2008-10-1'
       // const arr1 = str1.split('-')
       // console.log(arr1)

       // 2、字符串的截取 substring( 开始的索引号【, 结束的索引号】)
       // 如果省略了 结束的索引号 ,默认取到最后
       // 结束的索引号不包含需要的截取部分
       // const str = '等下要去吃饭了'
       // console.log(str.substring(4))
       // console.log(str.substring(4,6))

       // 3starsWith 判断是不是以某个字符开头
       // const str = '今天吃了吗'
       // console.log(str.startsWith('今天'))
       // console.log(str.startsWith(''))
       // console.log(str.startsWith('', 3))

       // 4includes 判断某个字符 是不是包含在一个字符串里面
       const str = '今天你吃饭了吗'
       console.log(str.includes('今天')) // true
       console.log(str.includes('吃饭')) // true
       console.log(str.includes('你好')) // false

       // 5 toFixed 方法 可以让数字指定保留的小数位置
       const num = 10.923
       // console.log(num.toFixed()) //11
       console.log(num.toFixed(2)) //10.92 后面的参数决定了你要保留几位小数
       const num1 = 10
       console.log(num1.toFixed(2)) //10.00

   </script>

</body>
</html>


案例练习:

<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <meta name="viewport"
         content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
   <meta http-equiv="X-UA-Compatible" content="ie=edge">
   <title>Document</title>
   <style>
       * {
margin: 0;
           padding: 0;
           box-sizing: border-box;
       }

.list {
width: 990px;
           margin: 100px auto 0;
       }

.item {
padding: 15px;
           transition: all 0.5s;
           display: flex;
           border-top: 1px solid #e4e4e4;
       }

.item:nth-child(4n) {
margin-left: 0;
       }

.item:hover {
cursor: pointer;
           background-color: #f5f5f5;
       }

.item img {
width: 80px;
           height: 80px;
           margin-right: 10px;
       }

.item .name {
font-size: 18px;
           margin-right: 10px;
           color: #333;
           flex: 2;
       }

.item .name .tag {
display: block;
           padding: 2px;
           font-size: 12px;
           color: #999;
       }

.item .price,
       .item .sub-total {
font-size: 18px;
           color: firebrick;
           flex: 1;
       }

.item .price::before,
       .item .sub-total::before,
       .amount::before {
content: "¥";
           font-size: 12px;
       }

.item .spec {
flex: 2;
           color: #888;
           font-size: 14px;
       }

.item .count {
flex: 1;
           color: #aaa;
       }

.total {
width: 990px;
           margin: 0 auto;
           display: flex;
           justify-content: flex-end;
           border-top: 1px solid #e4e4e4;
           padding: 20px;
       }

.total .amount {
font-size: 18px;
           color: firebrick;
           font-weight: bold;
           margin-right: 50px;
       }
</style>
</head>
<body>

       <div class="list">

       </div>
       <div class="total">
           <div>合计:<span class="amount">00.00</span></div>
       </div>

   <script>
       const goodsList = [
{
id: '4001172',
               name: '称心如意手摇咖啡磨豆机咖啡豆研磨机',
               price: 289.9,
               picture:
'https://yanxuan-item.nosdn.127.net/84a59ff9c58a77032564e61f716846d6.jpg',
               count: 2,
               spec: { color: '白色' },
           },
           {
id: '4001009',
               name: "竹制干泡茶盘正方形沥水茶台品茶盘",
               price: 109.8,
               picture:
'https://yanxuan-item.nosdn.127.net/2d942d6bc94f1e230763e1a5a3b379e1.png',
               count: 3,
               spec: { size: '40cm*40cm', color: '黑色' },
           },
           {
id: '4001874',
               name: '古法温酒汝瓷酒具套装白酒杯莲花温酒器',
               price: 488,
               picture:
'https://yanxuan-item.nosdn.127.net/44e51622800e4fceb6bee8e616da85fd.png',
               count: 1,
               spec: { color: '青色', sum: '一大四小' },
           },
           {
id: '4001649',
               name: '大师监制龙泉青瓷茶叶罐',
               price: 139,
               picture:
'https://yanxuan-item.nosdn.127.net/4356c9fc150753775fe56b465314f1eb.png',
               count: 1,
               spec: { size: '小号', color: '紫色' },
               gift: '50g茶叶,清洗球',
           },
       ]

// 1.渲染数据
           // 使用map方法遍历数据
           document.querySelector('.list').innerHTML = goodsList.map((item) => {
// console.log(item);获得准备数据中的每一组数据
                   // 解构
                   const { id, name, price, picture, count, spec, gift } = item
//  规格文字模块处理
                   const text = Object.values(spec).join('/')

// 处理赠品问题 50g茶叶,清洗球
                   const str = gift ? gift.split(",").map((item) =>
`<span class="tag">【赠品】${item}</span>`).join("") : ''
                   // 计算总价格
                   // 注意精度问题,因为保留两位小数,所以乘以 100 最后除以 100
                   const sum = ((count * 100 * price) / 100).toFixed(2)

return `
                       <div class="item">
                             <img src=${picture} alt="">
                             <p class="name">${name} ${str} </p>
                             <p class="spec">${text}</p>
                             <p class="price">${price.toFixed(2)}</p>
                             <p class="count">x${count}</p>
                             <p class="sub-total">${sum}</p>
                       </div>
                       `
               }).join('')

// 使用数组的reduce方法 累计器 计算总价格
       const total = goodsList.reduce((prev, item) => prev + (item.price * 100 * item.count) / 100, 0)
// 渲染并保留两位小数
       document.querySelector('.amount').innerHTML = total.toFixed(2)
</script>

</body>
</html>






返回列表 返回列表
评论

    分享到