循环
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/字符串的转换
- JSON转字符串
JSON.stringify(json_data)
- 字符串转JSON
JSON.parse(str_data)
- 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));
}
- 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,可以使用以下两种方法:
- 将isNaN()和typeof结合来判断
function isValueNaN(value) {
return typeof value === 'number' && isNaN(value)
}
- 值是否与本身不相等(NaN是唯一有这样特征的值)
function isValueNaN(value) {
return value !== value
}