繁体   English   中英

如何从具有值字符串的数组更改对象数组中的值

[英]How to change value in Array of Object from array with string of value

我有两个数组,基于daysActive值的数组,我想用value键值解析第二个对象数组,并将checked键值更改为true

var daysActive = ['monday', 'tuesday', 'wednesday'];

var weekDays = [{ "name": "Sunday", "value": "sunday", "id": "SUN","checked":false,disabled:true },
            { "name": "Monday", "value": "monday", "id": "MON" ,"checked":false,disabled:true},
            { "name": "Tuesday", "value": "tuesday", "id": "TUE","checked":false,disabled:true },
            { "name": "Wednesday", "value": "wednesday", "id": "WED","checked":false,disabled:true },
            { "name": "Thursday", "value": "thursday", "id": "THU","checked":false,disabled:true },
            { "name": "Friday", "value": "friday", "id": "FRI","checked":false,disabled:true },
            { "name": "Saturday", "value": "saturday", "id": "SAT","checked":false,disabled:true}
            ];

结果数组

var resultantDays = [{ "name": "Sunday", "value": "sunday", "id": "SUN","checked":false, disabled:true },
                { "name": "Monday", "value": "monday", "id": "MON" ,"checked":true, disabled:true},
                { "name": "Tuesday", "value": "tuesday", "id": "TUE","checked":true, disabled:true },
                { "name": "Wednesday", "value": "wednesday", "id": "WED","checked":true, disabled:true },
                { "name": "Thursday", "value": "thursday", "id": "THU","checked":false, disabled:true },
                { "name": "Friday", "value": "friday", "id": "FRI","checked":false, disabled:true },
                { "name": "Saturday", "value": "saturday", "id": "SAT","checked":false, disabled:true}
                ];

我已经尝试过了,但是它的方法是不正确的。

var modifiedWeekdays = days.map(value => {
  weekdays.forEach(function(val, key) {
    Object.entries(val).forEach(([keyObj, valObj]) => {
       if (keyObj === 'value' && valObj === value) {

       }
    });
  });
});

您可以使用map功能在weekDays阵列,看看是否值有在daysActive阵列

 var daysActive = ['monday', 'tuesday', 'wednesday']; var weekDays = [{ "name": "Sunday", "value": "sunday", "id": "SUN","checked":false,disabled:true }, { "name": "Monday", "value": "monday", "id": "MON" ,"checked":false,disabled:true}, { "name": "Tuesday", "value": "tuesday", "id": "TUE","checked":false,disabled:true }, { "name": "Wednesday", "value": "wednesday", "id": "WED","checked":false,disabled:true }, { "name": "Thursday", "value": "thursday", "id": "THU","checked":false,disabled:true }, { "name": "Friday", "value": "friday", "id": "FRI","checked":false,disabled:true }, { "name": "Saturday", "value": "saturday", "id": "SAT","checked":false,disabled:true} ]; weekDays.map(day => { day.checked = daysActive.indexOf(day.value) !== -1; }); console.log(weekDays); 

就像@Vineesh解决方案一样:)

 var daysActive = ["monday", "tuesday", "wednesday"]; var weekDays = [ { name: "Sunday", value: "sunday", id: "SUN", checked: false, disabled: true }, { name: "Monday", value: "monday", id: "MON", checked: false, disabled: true }, { name: "Tuesday", value: "tuesday", id: "TUE", checked: false, disabled: true }, { name: "Wednesday", value: "wednesday", id: "WED", checked: false, disabled: true }, { name: "Thursday", value: "thursday", id: "THU", checked: false, disabled: true }, { name: "Friday", value: "friday", id: "FRI", checked: false, disabled: true }, { name: "Saturday", value: "saturday", id: "SAT", checked: false, disabled: true } ]; daysActive.forEach(dayActive => { const activeDay = weekDays.find(day => day.value === dayActive); activeDay.checked = !activeDay.checked; }); console.log(weekDays); 

您可以将Array.prototype.reduce()Array.prototype.includes()结合使用

码:

 const daysActive = ['monday', 'tuesday', 'wednesday']; const weekDays = [{ "name": "Sunday", "value": "sunday", "id": "SUN","checked":false,disabled:true }, { "name": "Monday", "value": "monday", "id": "MON" ,"checked":false,disabled:true}, { "name": "Tuesday", "value": "tuesday", "id": "TUE","checked":false,disabled:true }, { "name": "Wednesday", "value": "wednesday", "id": "WED","checked":false,disabled:true }, { "name": "Thursday", "value": "thursday", "id": "THU","checked":false,disabled:true }, { "name": "Friday", "value": "friday", "id": "FRI","checked":false,disabled:true }, { "name": "Saturday", "value": "saturday", "id": "SAT","checked":false,disabled:true} ]; const resultantDays = weekDays.reduce((a, c) => [...a, c.checked = daysActive.includes(c.value), c], []); console.log(resultantDays); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

 for (let dayOfWeek of daysActive){ weekDays.filter(it => it['value']=== dayOfWeek)[0].checked=true; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM