JavaScript-开发中遇到的小tips

289 阅读1分钟

循环

forEach

forEach如果想要index,value:

list.forEach(fuction(value, key){
    ......//具体操作
})

//如果不需要index
list.forEach(e = >{
    ......//具体操作
})

数据类型

使用正则表达式来查询字符串

//data.habit:"{"每天吃1-2种水果": 0, "每周吃3次以上菌菇类食物": 0, "每天喝1杯(300毫升左右)牛奶": 42}"
//this.data.habits是小程序界面的数据框架,e.content是每个习惯的名称即“每天吃1-2种水果”这样
          let habits = this.data.habits
          habits.forEach(e => {
            let pat = new RegExp(e.content+"\\\": [0-9]+")
            let str = data.habit.match(pat)
            let str2 = str[0].substring(e.content.length)
            e.percent = Number(str2.match(/[0-9]+/))
          });

Map/JSON/字符串的转换

  1. JSON转字符串
JSON.stringify(json_data)
  1. 字符串转JSON
JSON.parse(str_data)
  1. Map转JSON字符串,需要先将Map转化为Object(对象)
 strMapToObj(str_map){
    let obj= Object.create(null);
    for (let[k,v] of strMap) {
      obj[k] = v;
    }
    return obj;
  }
  /**
  *map转换为json字符串
  */
  mapToJson(map) {
  return JSON.stringify(this.strMapToObj(map));
  }
  1. JSON字符串转JSON再转Map
objToStrMap(obj){
  let strMap = new Map();
  for (let k of Object.keys(obj)) {
    strMap.set(k,obj[k]);
  }
  return strMap;
}
 /**
  *json转换为map
  */
 jsonToMap(jsonStr){
    return this.objToStrMap(JSON.parse(jsonStr));

参考博客

判断是否NaN

判断是否是NaN,判断一个数值是否是非数字,而不是判断是不是NaN这个值

isNaN(NaN)  //true
isNaN(10) //false
isNaN('abc')  //首先试图'abc'转换为数字,转换失败,其结果为NaN,从而这个表达式结果为true

所以我们想确定这个一个值是为NaN,可以使用以下两种方法:

  1. 将isNaN()和typeof结合来判断
function isValueNaN(value) {
	return typeof value === 'number' && isNaN(value)
}
  1. 值是否与本身不相等(NaN是唯一有这样特征的值)
function isValueNaN(value) {
	return value !== value
}

参考博客