1.折叠框做法
首先遍历出所有id,并且全部value值为true,点击i时把marketId传出去,取反
<template>
<section class="table-body" v-show="slideStatus[`${item.marketId}`]" v-for="(v, i) in (item.lines)" :key="i">
<i class="iconfont iconshouqi white" @click="changeSlide(item.marketId)"/>
</section>
</template>
let slideStatus = Object.assign({}, this.slideStatus)
this.marketList.map(item => {
if (!this.slideStatus.hasOwnProperty(`${item.marketId}`)) {
slideStatus[`${item.marketId}`] = true
}
})
changeSlide (marketId) {
if (!marketId) {
return
}
this.slideStatus[marketId] = !this.slideStatus[marketId]
}
2.数据转换
image.png
res.data && res.data.forEach(x => {
x.lines.forEach(v => {
const finalMargin = v.options.reduce((per, cur) => per + cur.finalMargin, 0)
const originalMargin = v.options.reduce((per, cur) => per + cur.originalMargin, 0)
const finalPrice = v.options.reduce((per, cur) => per + (cur.finalPrice ? (1 / cur.finalPrice) : 0), 0)
v.options = v.options.concat({ ...v.options[0], finalMargin: finalMargin.toFixed(2), optionTypeName: 'Total', originalMargin: originalMargin, originalPrice: '', marginAdj: v.totalMargin, finalPrice: finalPrice.toFixed(2) })
})
})
3.form Data传给后端
const formData = new FormData()
Object.keys(params).forEach(key => formData.append(key, params[key]))
formData.append('matchType', this.activeName)
4.如何用js删除CSS属性?
const element = document.querySelector('h3)
h3.style.setProperty('color', 'initial')
5.Promise.prototype.finally()
**finally()**
方法返回一个Promise
。在promise结束时,无论结果是fulfilled或者是rejected,都会执行指定的回调函数。这为在Promise
是否成功完成后都需要执行的代码提供了一种方式。
这避免了同样的语句需要在then()
和catch()
中各写一次的情况。
image.png
7.循环有三种
1.for循环:
for(let i=0 ;i<10; i++)
2.遍历一个对象(一下子全访问,没有停顿)
for(let key in object)
3.可迭代对象(一个一个的访问,中间是有停顿的)
for(let key of Object)
8.去重:new Set 一定注意new Set()会将结果转换成对象!没法去重元素是引用对象的数组
image.png
image.png
image.png