120 lines
2.5 KiB
JavaScript
120 lines
2.5 KiB
JavaScript
|
|
/**
|
||
|
|
* 秒数转时长 1 → 00:01
|
||
|
|
*/
|
||
|
|
export function secondToDuration(second, fixed = 0) {
|
||
|
|
var sec = (second % 60).toFixed(fixed);
|
||
|
|
var min = Math.floor(second / 60);
|
||
|
|
if (min.toString().length < 2) {
|
||
|
|
min = '0' + min;
|
||
|
|
}
|
||
|
|
if (sec < 10) {
|
||
|
|
sec = '0' + sec;
|
||
|
|
}
|
||
|
|
return min + ':' + sec
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 判断两个对象是否相等
|
||
|
|
* @param {Object} o1
|
||
|
|
* @param {Object} o2
|
||
|
|
*/
|
||
|
|
export function objEquals(o1,o2){
|
||
|
|
if(o1 && o2){
|
||
|
|
return o1.platform == o2.platform && o1.id == o2.id;
|
||
|
|
}else{
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export function isExist(list,obj){
|
||
|
|
for (let itemIndex in list) {
|
||
|
|
const item = list[itemIndex];
|
||
|
|
if (objEquals(item,obj)) {
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
export function findIndex(list,obj){
|
||
|
|
for (let itemIndex in list) {
|
||
|
|
const item = list[itemIndex];
|
||
|
|
if (objEquals(item,obj)) {
|
||
|
|
return parseInt(itemIndex);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
|
||
|
|
export function findObj(list,obj){
|
||
|
|
const index = findIndex(list,obj);
|
||
|
|
if(inde != -1){
|
||
|
|
return list[index];
|
||
|
|
}
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
export function isFind(list,obj){
|
||
|
|
const index = findIndex(list,obj);
|
||
|
|
if(index != -1){
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
export function showToast(title,duration = 2000,icon="none",position="bottom"){
|
||
|
|
uni.showToast({
|
||
|
|
title,
|
||
|
|
icon,
|
||
|
|
duration,
|
||
|
|
position
|
||
|
|
});
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* 格式化歌词
|
||
|
|
* @param {String} lrcStr 歌词文本
|
||
|
|
* @param {String} mode 格式 object 对象模式,array 数组模式
|
||
|
|
*/
|
||
|
|
export function formatLrc(lrcStr,mode = 'object'){
|
||
|
|
const reg = /\[\d*:\d*(\.|:)\d*]/g
|
||
|
|
const timeReg = /\[(\d{2,})\:(\d{2})(?:\.(\d{1,3}))?\]/g; // eslint-disable-line no-useless-escape
|
||
|
|
let timeResult = [];
|
||
|
|
let index = 0;
|
||
|
|
if(mode == 'object'){
|
||
|
|
let lrcs = {};
|
||
|
|
lrcStr.split("\n").forEach(item => {
|
||
|
|
const timeRegAry = item.match(reg);
|
||
|
|
if (timeRegAry) {
|
||
|
|
const time = timeRegAry[0];
|
||
|
|
const min = parseInt(time.match(/\[\d*/i).toString().slice(1))
|
||
|
|
const sec = parseInt(time.match(/\:\d*/i).toString().slice(1))
|
||
|
|
const second = min * 60 + sec
|
||
|
|
const content = item.replace(timeRegAry, "")
|
||
|
|
lrcs[second] = {
|
||
|
|
time,
|
||
|
|
content
|
||
|
|
};
|
||
|
|
}
|
||
|
|
})
|
||
|
|
return lrcs;
|
||
|
|
}else{
|
||
|
|
let lrcs = [];
|
||
|
|
lrcStr.split("\n").forEach(item => {
|
||
|
|
const timeRegAry = item.match(reg);
|
||
|
|
if (timeRegAry) {
|
||
|
|
const time = timeRegAry[0];
|
||
|
|
const min = parseInt(time.match(/\[\d*/i).toString().slice(1))
|
||
|
|
const sec = parseInt(time.match(/\:\d*/i).toString().slice(1))
|
||
|
|
const second = min * 60 + sec
|
||
|
|
const content = item.replace(timeRegAry, "")
|
||
|
|
lrcs.push({
|
||
|
|
second,
|
||
|
|
time,
|
||
|
|
content
|
||
|
|
});
|
||
|
|
}
|
||
|
|
})
|
||
|
|
return lrcs;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|