1.设置一个定时器,一分钟输出一个"hello",当组件销毁时,删除定时器;
第一步:在data里定义一个timer变量;
第二步:在mounted里面设置定时器
mounted(){
this.timer = setInterval(()=>{
console.log('hello')
},1000*60)
},
destroyed() {
clearInterval(this.timer)
}
2.下列是购物车数据,name为商品名字,price是单价,count是商品件数;
const data = [
{"name":"衣服","price":5,"count":2},
{"name":"裤子","price":8,"count":1},
{"name":"毛巾","price":2,"count":5},
{"name":"裙子","price":10,"count":1},
{"name":"围巾","price":6,"count":2},
{"name":"衣服","price":5,"count":6},
{"name":"裤子","price":8,"count":2},
{"name":"毛巾","price":2,"count":8},
{"name":"鞋子","price":9.5,"count":2},
]
问题一:找出商品单价6-10之间的商品数据;
let arr = data.filter((item) => {
if(item.price>=6 && item.price <=10) {
return item
}
})
console.log(arr)
问题二:根据name去重;
let arr = data.reduce((prev,cur) =>{
if(!prev.find(item => item.name === cur.name)){
prev.push(cur)
}
return prev
},[])
console.log(arr)
问题三;计算购买购物车所有商品所需要的金额;
let sum = data.reduce((prev,cur) => {
prev = prev + cur.price*cur.count;
return prev
},0)
问题四;根据price排序(排序算法)
let arr = data.sort((a,b) => {
return a.price- b.price
})
或者:
for(let i = 0;i < data.length;i++) {
for(let j = i+1;j < data.length;j++) {
if(data[i].price > data[j].price){
data[i] = [data[i],data[j]];
data[j] = data[i][0];
data[i] = data[i][1];
}
}
}
3.清除data数据中age>18的数据;
const data = [
{name:"lili",age:17},
{name:"leilei",age:20}
{name:"a",age:15}
{name:"b",age:19}
{name:"c",age:25}
{name:"d",age:30}
]
4.以下是数据data;
const data = [1,1,2,45,6,2,7,67,5,22,32,45,7,4,5,46,57,5,22];
问题一:随机抽取data的n个元素(扩展:随机输出60-100之间的值);
console.log(data[Math.round(Math.random()*data.length)])
拓展答案:
function rand(a,b) {
return Math.ceil(Math.random()*(b-a+1)+a-1)
}
rand(60,100)
问题二:找出data中大于10得数据项;
let newData= data.filter(item => item>10)
问题三:排序:奇数在前,偶数在后,奇数降序,偶数升序,例如(13,9,7,5,2,4,6,8)
function sort(data) {
let oddArr= [],evenArr = [],newArr = [];
data.forEach(item=>{
if(item%2) {//奇数
oddArr.push(item)
}else {//偶数
evenArr .push(item)
}
})
oddArr.sort((a,b) => b-a); //奇数降序
evenArr.sort((a,b) => a-b);//偶数升序
newArr = oddArr.concat(evenArr)
return newArr
}
sort(data)
问题四:数组去重;
function noRepeated(data) {
let newData = data.reduce((prev,cur) => {
if(!prev.includes(cur)) {
prev.push(cur)
}
return prev
},[])
return newData
}
问题五:每个数字分别出现了几次,那个数字出现的次数最多;
function eleSum(data) {
let eleSum = data.reduce((prev,cur) => {
if(cur in prev) {
prev[cur]++
}else {
prev[cur] = 1;
}
return prev
},{})
let obj = eleSum,maxNum = 0,maxEle;
for(let i in obj) {
if(obj[i] > maxNum) {
maxNum = obj[i];
maxEle = i
}
}
console.log('出现次数最多的元素是:'+maxEle,'出现的最多次数是:'+maxNum)
}
eleSum(data)
5.将typelist的每一项从gather匹配,若匹配到拼接后面的中文,如果匹配不到不拼接且放置在数组最后
const typeList = [
{en:"sing",cn:"唱歌"},
{en:"dance",cn:"跳舞"},
{en:"study",cn:"学习"},
{en:"sleep",cn:"睡觉"},
{en:"watchTV",cn:"看电视"}
]
const gather = ["sing","casual","active","dance","games","study","sleep","watchTV","active","dawn","darkest"]
function splitJoin(type,list) {
list.forEach((item,index) => {
let ele = type.filter(ele => ele.en === item);
if(ele.length) {
let newEle = item+ele[0].cn;
list.splice(index,1);
list.unshift(newEle);
}
})
return list
}
splitJoin(typeList,gather)
6.实现深拷贝函数(不用JSON.parse和JSON.stringify);
function deep(object) {
if(!object || typeof object !== "object") return;
let data = Object.prototype.toString.call(obj) === "[object Array]"? []: {};
for(let i in object) {
data[i] = typeof object[i] === 'object' ? deep(object[i]): object[i];
}
return data
}