js函数方法

判断数组重复元素以及重复的个数以及重复数第一次出现的下标

原地址

var _arr = [ '保山市', '保山市', '保山市', '保山市', '保山市', '保山市', '楚雄州', '楚雄州', '楚雄州', '楚雄州', '楚雄州', '楚雄州', '大理州', '大理州', '大理州', '大理州', '德宏州', '德宏州', '德宏州', '德宏州', '红河州', '红河州', '红河州', '红河州', '红河州', '昆明市', '昆明市', '昆明市', '丽江市', '丽江市', '临沧市', '临沧市', '普洱市', '普洱市', '普洱市', '普洱市', '曲靖市', '曲靖市', '曲靖市', '曲靖市', '曲靖市', '曲靖市', '文山州', '文山州', '文山州', '玉溪市', '玉溪市', '玉溪市', '昭通市', '昭通市', '昭通市', '昭通市'];  
var _res = []; //   
//_arr.sort();  
for (var i = 0; i < _arr.length;) {  
    var count = 0; 
  var index=-1;
    for (var j = i; j < _arr.length; j++) {  
        if (_arr[i] == _arr[j]) {  
            count++;  //计算出现了几次
          index=i;//第一次出现的下标
        }  
    }  
    _res.push([_arr[i], count,index]);  
    i += count;  
}  
//_res 二维数维中保存了 值和值的重复数以及第一次出现的下标 
var _newArr = [];  
for (var i = 0; i < _res.length; i++) {  
    // console.log("值:"+_res[i][0] + "重复次数:" + _res[i][1]++ "第一次下标:" + _res[i][2]);  
    _newArr.push(_res[i][0] + 'x' + _res[i][1]+"=>"+_res[i][2]);  
}  
console.log(_newArr);

计算时间差

 /**
    * 获取两个时间差
    * @param seconds 时间差的毫秒数 
    * @param type 需要返回的类型,可按照需求自行新增分支组合返回
    * @returns 返回时间差(年月日时分秒)
    * @description var date1 = new Date("2022-09-20T16:35:43"); //开始时间
                   var date2 = new Date("2022-10-23T22:34:12.29"); //结束时间
                   var date3 = date2.getTime() - date1.getTime() //时间差的毫秒数
                   formatSeconds(seconds);
    */
   const formatSeconds = (seconds: number,type:number=0) => {
       var monthTime = 0 // 月
       var result:any = ''
       //计算出相差天数
       var dayTime = Math.floor(seconds / (24 * 3600 * 1000))
       //计算出小时数
       var leave1 = seconds % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
       var hourTime = Math.floor(leave1 / (3600 * 1000))
       //计算相差分钟数
       var leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
       var minuteTime = Math.floor(leave2 / (60 * 1000))

       //计算相差秒数
       var leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数
       var secondTime = Math.round(leave3 / 1000)
       if (dayTime > 30) {
           monthTime = Math.floor(dayTime / 30)
       } 

       switch(type){
           case 0:
               result =  (monthTime>12?Math.floor(monthTime / 12):0) + "年" + 
                       (monthTime>=12?Math.floor(monthTime % 12):monthTime) + "月" +
                       (dayTime>=30? Math.floor(dayTime % 30):dayTime) + "天" + hourTime + "时" 
                       + ((minuteTime >= 10 ? minuteTime : '0' + minuteTime) as any) + "分" +
                        ((secondTime >= 10 ? secondTime : '0' + secondTime)) + "秒";
               break;
           case 1:
               result = (monthTime>12?Math.floor(monthTime / 12):0) + "年";
               break;
           case 2:
               result = (monthTime>=12?Math.floor(monthTime % 12):monthTime) +"个月";
               break;
           case 3:
               result = (dayTime>=30? Math.floor(dayTime % 30):dayTime) +"天";
               break;
           case 4:
               result = leave1+"时";
               break;
           case 5:
               result = leave2+"分";
               break;
           case 6:
               result = leave3+"秒";
               break;

       }
       return result
   }

结果 1 年 7 月 12天 5小时 58 分钟29 秒

根据数组对象中的相同id值进行合并,并将name值合并,并且用逗号隔开返回新的数组对象

原链接

let dataArr = [
  {
   id:1,
   name:"A",
   score:10,
  },
  {
   id:2,
   name:"B",
   score:10,
  },
  {
   id:1,
   name:"c",
   score:10,
  },
  {
   id:2,
   name:"D",
   score:10,
  },
]
      var beforeData = dataArr;      //将dataArr赋值给beforeData  也可直接操作dataArr
      let tempArr = [];
      let afterData = [];//新数组
      for (let i = 0; i < beforeData.length; i++) {
        if (tempArr.indexOf(beforeData[i].id) === -1) {
          afterData.push({
            id: beforeData[i].id,
            score: beforeData[i].score,
            name: [beforeData[i].name],
          });
          tempArr.push(beforeData[i].id);
        } else {
          for (let j = 0; j < afterData.length; j++) {
            if (afterData[j].id == beforeData[i].id) {
              afterData[j].name.push(beforeData[i].name);
              break;
            }
          }
        }
      }
       //循环afterData并且合并name值用逗号隔开
       afterData.map((item) => {
        item.name= item.name.join(",");
       });
        console.log(afterData,'afterData')

判断一个数组对象中是否包含另外一个数组对象

var a = [{
  "id": 1,
  "name": 2
}];
var b = [{
  "name": 2,
  "id": 1
}];


for (let j = 0; j < b.length; j++) {
  if (!a.find(item => item.id === b[j].id)) {
    a.push(b[j])
  }
}


console.log(a)

//结果:[{"id":1,"name":2}]
//b数组根据返回的数据进行替换

根据对象属性来删除数组中的对象

var a = [{
  "id": 1,
  "name": 2
}, {
  "id": 2,
  "name": 2
}, {
  "id": 1,
  "name": 2
}, {
  "id": 1,
  "name": 2
}];

function handle(cc) {
  cc.forEach((value, index) => {
    if (value.id == 1) {
      cc.splice(index, 1);
      handle(cc);
    }
  })
  return cc;
}


console.log(JSON.stringify(handle(a)))
//结果 [{"id":2,"name":2}]

通过 document.getElementsByName 获取单选框选中的值

<!DOCTYPE html>
<html>
<head>
  <title>获取单选框的值</title>
</head>
<body>
  <form>
    <input type="radio" name="gender" value="male"> Male<br>
    <input type="radio" name="gender" value="female"> Female<br>
    <input type="radio" name="gender" value="other"> Other<br>
    <button type="button" οnclick="getSelectedRadioButtonValue()">获取选中的值</button>
  </form>

  <script>
    function getSelectedRadioButtonValue() {
      var radios = document.getElementsByName('gender');

      for (var i = 0; i < radios.length; i++) {
        if (radios[i].checked) {
          var selectedValue = radios[i].value;
          alert("选中的值是:" + selectedValue);
          break;
        }
      }
    }
  </script>
</body>
</html>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不学习何以强国

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值