代碼
用最短的代碼長度爲m(6)值都爲n({name:'jahn'})的數組
let arr = Array(3).fill({name:'jahn',age:18})
console.log(arr)
[ { name: 'jahn', age: 18 },
{ name: 'jahn', age: 18 },
{ name: 'jahn', age: 18 } ]
複製代碼
根據對象數組中對象的某一個屬性進行排序
let arr = [
{nmae:'jahn',age:18},
{name:'tom',age:12},
{name:'Jay',age:30}
]
arr.sort((a, b) => a.age - b.age);
console.log(arr)
[ { name: 'tom', age: 12 },
{ nmae: 'jahn', age: 18 },
{ name: 'Jay', age: 30 } ]
複製代碼
獲取指定時間範圍內的全部日期
const getDateRange = (startTime,endTime) =>{
let bd = new Date(startTime), be = new Date(endTime);
let
bd_time = bd.getTime(),
be_time = be.getTime(),
time_diff = be_time - bd_time;
let arr = [];
for (let i = 0; i <= time_diff; i += 86400000) {
let ds = new Date(bd_time + i);
arr.push( `${ds.getMonth()+1}-${ds.getDate()}`);
}
return arr
}
let result = getDateRange(Date.parse(new Date()) - 1000 * 60 * 60 * 24 * 6, Date.parse(new Date()))
console.log(result)
複製代碼
對象數組的元素去重
let array = [
{a:1,b:2,c:3,d:4},
{a:11,b:22,c:333,d:44},
{a:111,b:222,c:333,d:444},
{a:11,b:22,c:33,d:44},
{a:11,b:22,c:33,d:444}
];
function obj2key(obj, keys){
var n = keys.length,
key = [];
while(n--){
key.push(obj[keys[n]]);
}
return key.join('|');
}
function uniqeByKeys(array,keys){
var arr = [];
var hash = {};
for (var i = 0, j = array.length; i < j; i++) {
var k = obj2key(array[i], keys);
if (!(k in hash)) {
hash[k] = true;
arr .push(array[i]);
}
}
return arr ;
}
let arr = uniqeByKeys(array,['a','b']);
console.log(arr)
[ { a: 1, b: 2, c: 3, d: 4 },
{ a: 11, b: 22, c: 333, d: 44 },
{ a: 111, b: 222, c: 333, d: 444 } ]
複製代碼
數字、金額格式化
let str = '123456789'
let result = str.replace(/\B(?=(\d{3})+(?!\d))/g, ',')
console.log(result)
複製代碼
封裝
LocalStorage封裝
const storage = {
setStore(name,content){
if (!name) return;
if (typeof content !== 'string') {
content = JSON.stringify(content);
}
window.localStorage.setItem(name, content);
},
getStore(name){
if (!name) return;
return window.localStorage.getItem(name);
},
removeStore(name){
if (!name) return;
window.localStorage.removeItem(name);
}
}
storage.setStore("name",'jahn')
storage.getStore("name")
storage.removeStore("name")
複製代碼
IconFont 封裝
// 首先建立一個公共組件Icon的單頁文件
<template>
<svg :class="svgClass" aria-hidden="true">
<use :xlink:href="iconClass"></use>
</svg>
</template>
props: {
// 使用icon的圖標類型
iconName: {
type: String,
required: true,
},
// 是否添加class樣式
className: {
type: String,
default: ""
}
}
computed: {
iconClass() {
return `#icon-${this.iconName}`;
},
svgClass() {
if (this.className) {
return `icon ${this.className}`;
} else {
return `icon`;
}
}
}
<style lang="less"> .icon { width: 1em; height: 1em; vertical-align: -0.15em; fill: currentColor; overflow: hidden; } </style>
複製代碼
時間格式化
export function dateFormat (oldDate, fmt){
let date = new Date()
if (typeof oldDate === 'string' || typeof oldDate === 'number') {
date = new Date(+oldDate)
} else {
date = oldDate
}
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) }
let o = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'h+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds() }
function padLeftZero (str) {
return ('00' + str).substr(str.length)
}
for (let k in o) {
if (new RegExp(`(${k})`).test(fmt)) {
let str = o[k] + ''
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str))
}
}
return fmt
}
複製代碼
Less
Flex對齊方式
.flex(@justify: flex-start, @align:stretch){
display: flex;
justify-content:@justify;
align-items:@align ;
}
複製代碼
文字溢出省略
.omit(@lines) when(@lines = 1){
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.omit(@lines) when(@lines > 1){
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp:@lines;
overflow: hidden;
text-overflow: ellipsis;
word-break:break-all;
}
複製代碼