js如何将一个数组里的对象替换成另一个数组对应角标的对象或把单个对象替换数组里的对应地方的对象

把单个对象替换数组里的对应地方的对象

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);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值