[英]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.