Files
im/util/music/BaseUtil.js
T

120 lines
2.5 KiB
JavaScript
Raw Normal View History

2026-02-15 19:41:13 +08:00
/**
* 秒数转时长 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;
}
}