从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理
await/async详解
promise手写
深拷贝
- 将对象数组封装为新的对象数组:
原对象数组categoryList:[{imageShow:‘111’,cat_name:‘111’,cat_id:‘111’},{imageShow:‘222’,cat_name:‘222’,cat_id:‘222’}]
新对象数组:categoryListTemp:[{cat_name:‘111’,cat_id:‘111’},{cat_name:‘222’,cat_id:‘222’}]
let categoryListTemp = categoryList.map((item)=>{
return {
catName: item.cat_name,
catId: item.cat_id
};
});
- VUE 二次渲染加载梯形,内容长度不固定:
<div :id = "`limitSpan${arr.activeId}`" class="title-span">
</div>
<script>
let that = this;
that.$nextTick(function(){
for(let i=0; i<that.activities.length;i++){
if(document.getElementById(`limitSpan${that.activities[i].activeId}`).offsetWidth){
let w = document.getElementById(`limitSpan${that.activities[i].activeId}`).offsetWidth;
that.activities[i].allWidth = w+'px'; //梯形的宽度根据文字内容的宽度决定
}
}
});
</script>
- function A(…a){console.log(a);} // a为一个数组
- 把数组里的数组的每一个值提取出来
siteList = siteList.map((item) => {
return item.siteList.forEach(function(val){
siteListT.push(val);
});
})
- 数组插入数据 arr.push(data)
数组插入数组arr.push(…arr2) 或者 arr.concat(arr2) - 更改数组中的参数名称:
let data1 = [
{ appName: "NAME1", capacity: 233456 },
{ title: "NAME2", key: 124535 }
];
let data2 = [];
data1.forEach(item => {
data2.push({
name: item.appName || item.title,
value: item.capacity || item.key
});
});
- ES6 检测数组中是否存在满足某些条件的元素实现方式
let arr = [2, 5, 8, 1, 4]
// filter 实现 返回 数组
let result = arr.filter(item => {
return item > 10
}).length > 0
// find 实现 返回所匹配的那一项
let result = arr.find(item => {
return item > 10
}) !== undefined
// some 实现 返回true false
let result = arr.some(item => {
return item > 10
})
addChannelCart: function () {
const that = this;
// console.log(that.data.warehouse_id, ‘添加购物车==>warehouse_id’)
let result = that.data.cart_list.some(item => {
return item.warehouse_id == that.data.warehouse_id
})
console.log(result, ‘result’)
if (!result) {
wx.showToast({
title: ‘’,
icon: ‘none’
})
}
return;
if (!wx.getStorageSync(‘brand_shop_id’)) {
wx.showToast({
title: ‘添加购物车无brand_shop_id’,
})
}