我正在使用angular 5.我需要更新基于selectedMobile的数组值。 我的编码:
const mobilelist = [
{ 'key': 'apple', 'name': 'Apple', 'checked': false },
{ 'key': 'sumsung', 'name': 'Sumsung', 'checked': false },
{ 'key': 'oneplus', 'name': 'Oneplus', 'checked': false },
{ 'key': 'mi', 'name': 'Mi', 'checked': false }
];
const selectedMobile = ['apple'];
const newmobilelist: any = [];
if (selectedMobile.length > 0) {
mobilelist.forEach(element => {
if (selectedMobile.find(x => x == element.key) != null) {
newmobilelist.push({ 'key': element.key, 'name': element.name, 'checked': true });
} else {
newmobilelist.push({ 'key': element.key, 'name': element.name, 'checked': false });
}
});
}
console.log(newmobilelist);
在控制台中,我期待的结果如下:
[
{ 'key': 'apple', 'name': 'Apple', 'checked': true },
{ 'key': 'sumsung', 'name': 'Sumsung', 'checked': false },
{ 'key': 'oneplus', 'name': 'Oneplus', 'checked': false },
{ 'key': 'mi', 'name': 'Mi', 'checked': false }
];
但上面的代码返回如下:
[
{ 'key': 'apple', 'name': 'Apple', 'checked': false },
{ 'key': 'sumsung', 'name': 'Sumsung', 'checked': false },
{ 'key': 'oneplus', 'name': 'Oneplus', 'checked': false },
{ 'key': 'mi', 'name': 'Mi', 'checked': false }
];
我不知道为什么?,请帮忙解决......
答案 0 :(得分:3)
如前所述,您的代码似乎运行正常。但是,它不必要地复杂,你可以像这样大幅缩小它。
const mobilelist = [
{ 'key': 'apple', 'name': 'Apple', 'checked': false },
{ 'key': 'sumsung', 'name': 'Sumsung', 'checked': false },
{ 'key': 'oneplus', 'name': 'Oneplus', 'checked': false },
{ 'key': 'mi', 'name': 'Mi', 'checked': false }
];
const selectedMobile = ['apple'];
const newmobilelist = mobilelist.map(x => { x.checked = selectedMobile.includes(x.key); return x});
console.log(newmobilelist)