把单个对象替换数组里的对应地方的对象
var grapeList = [
{ score: '', color: '', checkDate: "1" },
{ score: '', color: '', checkDate: "2" },
{ score: '', color: '', checkDate: "3" },
{ score: '', color: '', checkDate: "4" },
{ score: '', color: '', checkDate: "5" },
];
var setGrapeInfo={score:'60',color:'yellow',checkDate:"5"};
grapeList = grapeList.map(t => {
return t.checkDate === setGrapeInfo.checkDate
? setGrapeInfo
: t;
});
console.log("grapeList",grapeList);
遇到的BUG是:点击8和13没有效果,点击1和2有效果
出现这种情况是因为:......有些代码写错了
grapeInfo:[
{score:'70',color:'violet',date:"8"},
{score:'60',color:'violet',date:"13"},
]
后台传过来的数据只有这么点,但是我循环的时候是一个个循环,所以会出现点击8和13没有效果,点击1和2有对应的效果
所以这时候我要定义空数据,然后把相应的对象放到本来的空数组里面。
var emptyGrapeInfoData=[
{score:'',color:'',date:"1"},
{score:'',color:'',date:"2"},
{score:'',color:'',date:"3"},
{score:'',color:'',date:"4"},
{score:'',color:'',date:"5"},
{score:'',color:'',date:"6"},
{score:'',color:'',date:"7"},
{score:'',color:'',date:"8"},
{score:'',color:'',date:"9"},
{score:'',color:'',date:"10"},
{score:'',color:'',date:"11"},
{score:'',color:'',date:"12"},
{score:'',color:'',date:"13"},
{score:'',color:'',date:"14"},
{score:'',color:'',date:"15"},
{score:'',color:'',date:"16"},
{score:'',color:'',date:"17"},
{score:'',color:'',date:"18"},
{score:'',color:'',date:"19"},
{score:'',color:'',date:"20"},
{score:'',color:'',date:"21"},
{score:'',color:'',date:"22"},
{score:'',color:'',date:"23"},
{score:'',color:'',date:"24"},
{score:'',color:'',date:"25"},
{score:'',color:'',date:"26"},
{score:'',color:'',date:"27"},
{score:'',color:'',date:"28"},
{score:'',color:'',date:"29"},
{score:'',color:'',date:"30"},
{score:'',color:'',date:"31"}
]
var originGrapeData=[
{score:'70',color:'violet',date:"8"},
{score:'60',color:'violet',date:"13"}
]
for(let i=0;i<emptyGrapeInfoData.length;i++){
for(let j=0;j<originGrapeData.length;j++){
if(emptyGrapeInfoData[i].date===originGrapeData[j].date){
emptyGrapeInfoData[i]=originGrapeData[j];
}
}
}
console.log("emptyGrapeInfoData",emptyGrapeInfoData);
得到新的数组:
发现只是颜色对上了,但是葡萄的值还是对不上
这时候就要使用filter来筛出所需要的对象了
var grapeInfo=[
{score:'60',color:'green',checkDate:"3"},
{score:'60',color:'yellow',checkDate:"5"},
{score:'60',color:'#ccc',checkDate:"7"},
{score:'60',color:'red',checkDate:"16"},
]
var curGrapeObj=data.grapeInfo.filter(x=>x.checkDate==curDay);