我似乎无法弄明白这一点,虽然我非常积极,但之前我已经使用过这种方法。
我有一个在构造函数方法之前初始化的对象数组。
servers: ServerObject[] = [
{
name: 'dev',
disabled: true
},
{
name: 'qa',
disabled: true
},
{
name: 'prod',
disabled: true
}
];
我们的想法是在登录后切换服务器权限。因此,根据返回的标记,将disabled设置为false。这发生在构造函数方法中。这是看起来像:
_.each(this.tokens, (item:TokenObject) => {
// print array -> target property is correctly set to 'true'
console.log(this.servers);
// print object before change -> target property is correctly set to 'true'
console.log(_.findWhere(this.servers, {name: item.name}));
_.findWhere(this.servers, {name: item.name}).disabled = false;
// print object after change -> target property is correctly set to 'false'
console.log(_.findWhere(this.servers, {name: item.name}));
// print array -> target property is incorrectly set to 'true'
console.log(this.servers);
})
我需要this.servers
来表明这一点:
{
name: 'qa',
disabled: false
},
我也试过这个下划线的findIndex方法,控制台消息与上面相同。这是这样的:
this.servers[_.findIndex(this.servers, {name: item.name})].disabled = false;
答案 0 :(得分:0)
你能试试吗?
this.tokens.forEach((item:TokenObject) =>
this.servers.find(server=>server.name === item.name).disabled = false;
})
答案 1 :(得分:0)
我测试了这段代码:
const servers: any[] = [
{name: 'dev', disabled: true},
{name: 'qa', disabled: true},
{name: 'prod', disabled: true}
];
[{name: 'prod'}].forEach((item) => servers.find(server => server.name === item.name).disabled = false);
console.log(servers);
console.log(servers.filter(server => !server.disabled));
结果:
“[{” 名称 “:” dev的”, “无效”:真},{ “名称”: “QA”, “无效”:真},{ “名称”: “PROD”, “无效”:假}]“
这对你有帮助吗?“[{” 名称 “:” PROD “ ”无效“:假}]”