/*
* 根据两地经纬度获取距离
*/
function getDistance(lat1, lng1, lat2, lng2){
let radLat1 = lat1 * Math.PI / 180.0;// 纬度转化成弧度
let radLat2 = lat2 * Math.PI / 180.0;
let a = radLat1 - radLat2;
let b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;// 经度差
let distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)))*6378.137;// 地球的半径为6378.137km
console.log(parseInt(distance * 1000))
return parseInt(distance * 1000);// 返回米数
}
/*
保留两位小数 不四舍五入
* @param {*} num 可带+-号
* @param {*} decimal 保留小数点位数
*/
function keepTwoNum(num,decimal){
num = num + "";
var str = "";
if (num.indexOf("+") >= 0) {
str = "+";
} else if (num.indexOf("-") >= 0) {
str = "";
} else {
str = "";
}
num = num.toString();
// decimal= decimal || 2;
decimal = decimal == "0" ? 0 : Number(decimal) || 2;
let index = num.indexOf(".");
if (index !== -1) {
num = num.substring(0, decimal + index + 1);
} else {
num = num.substring(0);
}
let resultNumber=str + parseFloat(num).toFixed(decimal)
return resultNumber;
}
keepTwoNum(54.99,"1")
// 获取其他日期
//参数格式 ’-/+ number‘ 如 前七天 getOrderDaysDate(-7) 后三天 getOrderDaysDate(+3)
function getOrderDaysDate(days,date){
var date = date || new Date(),
timestamp, newDate;
if(!(date instanceof Date)){
date = new Date(date.replace(/-/g, '/'));
}
timestamp = date.getTime();
newDate = new Date(timestamp + (days * 24 * 3600 * 1000));
return [newDate.getFullYear(), newDate.getMonth() + 1, newDate.getDate()].join('-');
}
// 获取星期 参数格式:'2024-02-17'
function getWeek(show_time) {
let str=''
if(show_time){
let dateArr = show_time.split(' ')
let dateLeftArr = dateArr[0].split('-')
let year = dateLeftArr[0];
let month = dateLeftArr[1];
let day = dateLeftArr[2];
var date = new Date(year, month - 1, day); // JavaScript中月份从0开始计数,需要将month-1
str=['周日', '周一', '周二', '周三', '周四', '周五', '周六'][date.getDay()];
return str
}else{
return str
}
}
// 获取今天日期 返回格式 2024-02-17
function getCurrentData(){
let curDate = new Date();
let curYear=curDate.getFullYear()
let curMonth=curDate.getMonth()+1<10?`0${curDate.getMonth()+1}`:curDate.getMonth()+1
let curDay=curDate.getDate()<10?`0${curDate.getDate()}`:curDate.getDate()
let curDateStr=curYear+'-'+curMonth+'-'+curDay
return curDateStr
}
// 获取显示的时间文本 参数格式2024-02-18 返回:今日 周一 ...
function getWeekStr(show_time){
let currentDate=getCurrentData()
if(show_time&¤tDate){
let showText=''
let dateLeftArr = show_time.split('-')
let dataStr=dateLeftArr[1]+'-'+dateLeftArr[2]
let year = dateLeftArr[0];
let month = dateLeftArr[1];
let day = dateLeftArr[2];
if(show_time==currentDate){
showText='今天 '+month+'-'+day
}else{
var date = new Date(year, month - 1, day); // JavaScript中月份从0开始计数,需要将month-1
showText=['周日', '周一', '周二', '周三', '周四', '周五', '周六'][date.getDay()]
showText=showText+ ' '+ dataStr
}
return showText
}else{
return ''
}
}
// 获取月日 参数格式:'2024-02-17'
function getMonthAndDate(show_time) {
let str=''
if(show_time){
let dateArr = show_time.split(' ')
let dateLeftArr = dateArr[0].split('-')
str = dateLeftArr[1] + '月' + dateLeftArr[2] + '日'
}
return str
}
// 获取年月日 参数格式 ‘2024-2-17 11:30:00’或‘2024-2-17’
function getYearAndMonthAndDate(paramTime) {
let pushTimeStr = ''
if (paramTime) {
let pushDataArr = paramTime.split(' ')[0]
pushDataArr = pushDataArr.split('-')
pushTimeStr = pushDataArr[0] + '年' + pushDataArr[1] + '月' + pushDataArr[2] + '日'
}
return pushTimeStr
}
// 获取时间时分 参数格式 ‘2024-2-17 11:30:00’
function getHoursAndMinutes() {
if (show_time) {
let dateArr = show_time.split(' ')
let timeArr = dateArr[1].split(':')
let str = timeArr[0] + ':' + timeArr[1]
return str
}
}
// 获取排序日期 参数格式:['2021-6-5','2021-8-30','2021-07-02','2020-04-05']
function getSortDateArr(dataList){
let newArr=dataList.sort((a,b)=>{
let yearA = new Date(a).getFullYear();
let yearB = new Date(b).getFullYear();
if (yearA !== yearB) {
return yearA - yearB;
}
let monthA = new Date(a).getMonth();
let monthB = new Date(b).getMonth();
if (monthA !== monthB) {
return monthA - monthB;
}
let dateA = new Date(a).getDate();
let dateB = new Date(b).getDate();
if (dateA !== dateB) {
return dateA - dateB;
}
})
return newArr
}
// let dateArr=['2021-6-5','2021-8-30','2021-07-02','2020-04-05']
// getSortDateArr(dateArr)
// 根据时间戳获取时间 年月日
function getTimeFormat(time){
//time 1398250549490
//时间数字转2014-04-23 18:55:49 格式
// php 后端时间戳返回10位数,补3个 000
if (time == "0" || time == "0000" || !time) {
return "----";
}
time = time + "";
var date = "";
if (time.length >= 13) {
date = new Date(parseInt(time));
} else {
date = new Date(parseInt(time + "000"));
}
var Y = date.getFullYear() + "-";
var M = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1) + "-";
var D = (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " ";
var h = (date.getHours() < 10 ? "0" + date.getHours() : date.getHours()) + ":";
var m = (date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes()) + ":";
var s = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
return Y + M + D + h + m + s;
}
function getTimeFormat2(time){
//time 1398250549490
//时间数字转2014-04-23 18:55:49 格式
// php 后端时间戳返回10位数,补3个 000
if (time == "0" || time == "0000") {
return "";
}
time = time + "";
var date = "";
if (time.length >= 13) {
date = new Date(parseInt(time));
} else {
date = new Date(parseInt(time + "000"));
}
var Y = date.getFullYear() + "-";
var M = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1) + "-";
var D = (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " ";
return Y + M + D;
}
//转为大写数字 参数格式 整数 位数为123456789 超过九位数返回undefined
function toChinesNum(num){
let changeNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"]; //changeNum[0] = "零"
let unit = ["", "十", "百", "千", "万"];
num = parseInt(num);
let getWan = (temp) => {
let strArr = temp.toString().split("").reverse();
let newNum = "";
for (var i = 0; i < strArr.length; i++) {
newNum = (i == 0 && strArr[i] == 0 ? "" : i > 0 && strArr[i] == 0 && strArr[i - 1] == 0 ? "" : changeNum[strArr[i]] + (strArr[i] == 0 ? unit[0] : unit[i])) + newNum;
}
return newNum;
};
let overWan = Math.floor(num / 10000);
let noWan = num % 10000;
if (noWan.toString().length < 4) noWan = "0" + noWan;
let str=overWan ? getWan(overWan) + "万" + getWan(noWan) : getWan(num);
return str
}
// toChinesNum(182978985)
// 对象数组根据某个属性进行排序
arr = [{name: "韦", age: 24}, {name: "何", age: 25},{name: "黄", age: 25},{name: "han", age: 25}];
function compare(prop) {
return function (obj1, obj2) {
var val1 = obj1[prop];
var val2 = obj2[prop];if (val1 < val2) {
return -1;
} else if (val1 > val2) {
return 1;
} else {
return 0;
}
}
}
// 使用
let sortArr=arr.sort(compare('name'))
console.log(JSON.stringify(sortArr),6666);
//补0前缀
function addZeroPrefix(number) {
return number < 10 ? `0${number}`:number
},
// 隐私手机号 返回187****6666格式
function changeTelProfetionNal(tel){
tel=tel+""
let newTel=tel.replace(/^(\d{3})\d{4}(\d{4})$/,`$1****$2`)
console.log(newTel);
return newTel
}
changeTelProfetionNal(18766666666)
uniapp路由跳转携带中文参数 获取时会得到乱码:
uni.navigateTo({
url: '/pages/target?param=' + encodeURIComponent('中文参数')
})
//encodeURIComponent解码出来还是乱码时 试试删除encodeURIComponent 直接拼接中文
//解码方式:onLoad生命周期中接收参数 使用decodeURIComponent进行解码
onLoad: function (options) {
let param = decodeURIComponent(options.param)
console.log(param) // 输出:中文参数
}
//判断两个字符串数组中的元素是否相同
//方法一 先判断长度,再遍历比较
arrayCompare(array1, array2) {
// 如果长度不一样,则直接不相等
if(array1.length != array2.length){
return false;
}
// 如果长度一样,则for循环比较
for(let i = 0; i < array1.length; i++){
// array1的元素是否都在array2中存在,有一个不存在就不相等
if(!array2.includes(array1[i])){
return false;
}
}
for(let i = 0; i < array2.length; i++){
// array2的元素是否都在array1中存在,有一个不存在就不相等
if(!array1.includes(array2[i])){
return false;
}
}
// 如果执行到这里,说明全部匹配
return true;
}
//方法二
arrayCompare1(arr1, arr2) {
let result = arr1.length === arr2.length && arr1.every(a => arr2.some(b => a === b)) && arr2.every(_b => arr1.some(_a => _a === _b));
return result;
}