js常用的方法总结

字符串

指定位置添加指定字符

	const str = "中国中央电视台中央广播电视";
    function subStr (str){
        // 设置变量存储返回值
        let newstr = "";
      // 如果长度超过5,就要截取插入字符
        if(str.length > 5) {
            // 第一次截取
            newstr = str.slice(0, 5) + "\n";
            // 闭包再次调用,如果截取后的字段长度依然超过5,再次调用,如果没有直接返回当前值
            return newstr + subStr(str.slice(5));
        } else {
            // 直接返回当前值 
            return str
        }
    }
    console.log(subStr(str))

js控制字符串超出部分显示“更多”

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>js控制显示字符</title>
  </head>
  <body>
    <div class="box">我还没超出哟</div>
    <div class="box">真的很抱歉,我超出最大长度,可能有一部分不显示了呢</div>
  </body>
  <script  type="text/javascript" src="https://blog-static.cnblogs.com/files/wh35/jquery-3.2.1.min.js" ></script>
  <script type="text/javascript">
    $(".box").each(function () {
      var str = $(this).html()
      var subStr = str.substring(0, 10)
      $(this).html(
        subStr +
          (str.length > 10
            ? "..." + "<a href='#' class='active'>查看更多</a>"
            : "")
      )
    })
  </script>
</html>

在这里插入图片描述

数字

判断一个数字是否是回文数字

回文数字:指正序和倒序读一样的数字;例如 12321、1221 是回文数,1234不是回文数

  • 使用string
  const num = 7121217
  
  function isPalindromeNumber(num) {
    // 使用string的方式
    const arr = num.toString().split('')
    let reversal = []
    for (let index = 0; index < arr.length; index++) {
      reversal.unshift(arr[index])
    }
    const reversalNum = Number(reversal.join(''))
    console.log(reversalNum === num); 
  }

  isPalindromeNumber(num)
  • 不使用string
  const num = 121219

  function isPalindromeNumber(num) {
    // 不使用string的方式
    if(num < 0) console.log(false)
    else {
      let arr = [];
      // 将数字转成数组
      while (num){
          arr.unshift(num % 10);
          num = parseInt(num /10)
      }
      
	  // 将数组反转
      let newArr = []
      for (let index = 0; index < arr.length; index++) {
         newArr.unshift(arr[index])
      }

      let flag = true
      // 循环判断反转前后的数组是否相同
      for (let index = 0; index < newArr.length; index++) {
        if( newArr[index] !== OldArr[index]) {
          flag = false
          break
        }
      }
      console.log(flag);
    }
  }

  isPalindromeNumber(num)

js格式数字金额(四舍五入保留两位小数)

	function outputmoney(number) {
		number = number.replace(/\,/g, "");
		if(isNaN(number) || number == "")return "";
		number = Math.round(number * 100) / 100;
		    if (number < 0)
		        return '-' + outputdollars(Math.floor(Math.abs(number) - 0) + '') + outputcents(Math.abs(number) - 0);
		    else
		        return outputdollars(Math.floor(number - 0) + '') + outputcents(number - 0);
	} 
	//格式化金额
	function outputdollars(number) {
	    if (number.length <= 3)
	        return (number == '' ? '0' : number);
	    else {
	        var mod = number.length % 3;
	        var output = (mod == 0 ? '' : (number.substring(0, mod)));
	        for (i = 0; i < Math.floor(number.length / 3); i++) {
	            if ((mod == 0) && (i == 0))
	                output += number.substring(mod + 3 * i, mod + 3 * i + 3);
	            else
	                output += ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
	        }
	        return (output);
	    }
	}
	function outputcents(amount) {
	    amount = Math.round(((amount) - Math.floor(amount)) * 100);
	    return (amount < 10 ? '.0' + amount : '.' + amount);
	}
	// 测试
	console.log(outputmoney(1000))// 100.00
	console.log(outputmoney(1000.191))// 1,000.19
	console.log(outputmoney(1000.199))// 1,000.20

数组

提取数组中指定参数,并返回该参数的集合

  • 应用场景:在一个数组对象中想要直接获取某个参数值的集合
    getFiledArr(arrs, paramsname) {
        let arr = [];
        arr = arrs.map(d => d[paramsname]) || [];
        return arr;
    }
  
	const datas =  [
       {
           "ItemName": "账面原值(万元)",
           "ItemValue": "901.00",
           "ItemOldValue": "903.00",
       },
       {
           "ItemName": "土地账面原值(万元)",
           "ItemValue": "991.00",
           "ItemOldValue": "905.00",
       }
	 ];
	console.log("ItemName集合:", getFiledArr(datas, 'ItemName'));
	console.log("ItemValue集合:", getFiledArr(datas, 'ItemValue'));

在这里插入图片描述

传入指定对象数组,就算某个参数的总和

    /**
     *  求和
     * @param {*} arr 数组
     * @param {*} params 求和参数
     * @memberof PsurveyContainerComponent
     */
    computeTotal(arr, params) {
        let total = 0;
        total = arr.reduce((acc, cur) => {
            return acc + (cur[params] || 0)
        }, 0)
        return total
    };

	const datas = [
	{ name: "数学", fraction: 130 },
	{ name: "语文", fraction: 140 },
	{ name: "英语", fraction: 125 },
	{ name: "理综", fraction: 280 }
	]
	console.log("总成绩:", computeTotal(datas, 'fraction') )

在这里插入图片描述

提取指定数组中,对象指定的两个参数组合,并返回字符串

		function getFiledValueStr(arr, filedname, filedvalue) {
	        let str = "";
	        arr.map((d,i) => {
	            const strname = d[filedname] + ":" + d[filedvalue];
	            if (i !== 0) str += ("," + strname);
	            else str += strname;
	        })
	        return str
		 }

		const datas =  [
            {
                "ItemName": "账面原值(万元)",
                "ItemValue": "901.00",
                "ItemOldValue": "903.00",
            },
            {
                "ItemName": "土地账面原值(万元)",
                "ItemValue": "991.00",
                "ItemOldValue": "905.00",
            }
        ];

		console.log("变更前:", getFiledValueStr(datas, 'ItemName', 'ItemOldValue'));
		console.log("变更后:", getFiledValueStr(datas, 'ItemName', 'ItemValue'));

在这里插入图片描述

数组中日期排序

// 原数组
	var timeArr=[       
	{'id':'A01','date':'2016-04-20 23:22:11'},      
	{'id':'A02','date':'2016-04-21 21:00:11'},      
	{'id':'A03','date':'2016-04-23 22:00:22'},      
	{'id':'A04','date':'2016-04-19 12:22:00'},      
	{'id':'A05','date':'2016-02-19 11:11:00'}   
	];
	timeArr.sort(function(a,b) {return Date.parse(b.date.replace(/-/g,"/"))-Date.parse(a.date.replace(/-/g,"/"));});

根据数组第三级数据特定参数排序

使用的format.js文件地址:format.js

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script src="./format.js">
</script>

<script>
    /**
     * 本方法的功能,实现根据第三级数据的iriscode进行正序排序,即:三级为111,则对应的二级和一级排到第一位。根据三级的code值决定二级的正序位置和一级的正序位置
    */
    function sortData(data) {
        // 遍历主数据
        let newData = data.map(item => {
            // 取出一级数据的子集(二级数据)
            let itemChildrens = item.children || []
            // 遍历子集(二级数据)
            itemChildrens = itemChildrens.map(son => {
                // 取出二级数据的子集(三级数据)
                let sonChildrens = son.children || []

                // sonChildrens = sonChildrens.sort((a,b) => a.iriscode - b.iriscode ) // 如果当前三级的iriscode是乱序的话,需要手动排序,执行此代码!

                // 取出三级数据中的第一个iriscode作为二级数据排序的tabIndex(依据)。当前提供的数据,第三级的iriscode都是正序排序后的,如果当前三级的iriscode是乱序的话,需要手动排序。
                let tabIndex = sonChildrens[0].iriscode
                return { ...son, tabIndex  }
            })
            // 对一级数据中的子集(二级数据)进行正序排序,排序的依据是tabIndex(依据)
            itemChildrens = itemChildrens.sort((a,b) => a.tabIndex - b.tabIndex)

            // 取出一级数据的子集(二级数据)中的第一个tabIndex作为一级数据排序的tabIndex(依据)。
            return { ...item, children: itemChildrens, tabIndex: itemChildrens[0].tabIndex }

        })
        // 对一级数据进行正序排序,排序的依据是tabIndex(依据)
        newData = newData.sort((a,b) => a.tabIndex - b.tabIndex)

        // 返回排序的结果
        return newData
    }

    console.log('原始数据', data)

    console.log('排序后的数据', sortData(data));
</script>
</html>

对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值