gpt4 book ai didi

javascript - 如何保存对象的初始语句?

转载 作者:行者123 更新时间:2023-11-30 08:18:03 25 4
gpt4 key购买 nike

我有类型的对象:

export interface IGroupLanguage {
name: string;
languages?: Language[];
}

let data = [ { "name": "Automation", "languages": [ { "Name": "English", "Lcid": 1, "RightToLeft": true, "Code": "EN", "Mapped": true } ] }, { "name": "Monitors", "languages": [ { "Name": "Russian", "Lcid": 2, "RightToLeft": true, "Code": "RU", "Mapped": true } ] } ];

然后我尝试过滤对象并返回一个新对象:

 this.filteredObject = [...this.groups];
this.filteredObject.map(item => {
item.languages = item.languages.filter(
lg =>
lg.Name.toLocaleLowerCase().indexOf(searchQuery) != -1 ||
lg.Code.toLocaleLowerCase().indexOf(searchQuery) != -1
);
});

问题是初始对象 this.groups 也被改变了。如何保存对象的初始语句?

结果我需要没有修改对象 this.groups 和过滤对象 this.filteredObject

我知道问题是因为 JS 通过引用复制对象,但我不知道如何解决。

完整代码为:

search(searchQuery: string) {
this.filteredObject = [...this.groups];
this.filteredObject.map(item => {
let tempLang = [...item.languages];
item.languages = tempLang.filter(
lg =>
lg.Name.toLocaleLowerCase().indexOf(searchQuery) != -1 ||
lg.Code.toLocaleLowerCase().indexOf(searchQuery) != -1
);
});

console.log(this.groups);
}


ngOnInit() {
this.filteredObject = [...this.groups];
}

结果初始对象 console.log(this.groups); 也被修改

最佳答案

因为你已经深度复制了数据的父数组而不是嵌套的数据,你能试试下面的方法吗-

this.filteredObject = [...this.groups];
this.filteredObject.map(item => {
let tempLang = [...item.languages];
item.languages = tempLang.filter(lg =>
lg.Name.toLocaleLowerCase().indexOf(searchQuery) != -1 ||
lg.Code.toLocaleLowerCase().indexOf(searchQuery) != -1
);
});

关于javascript - 如何保存对象的初始语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58650735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com