我的一个组件中有一个JavaScript对象数组
@Component(stuff)
export class ComponentName {
arrayOfObjects = [];
// stuff
}
其中每个对象都有键key1
和key2
.
我想要的是ComponentName
有一个数组arrayOfSubobjects
其内容是
{
key1: 'value1',
key2: 'value2'
}
对于驻留在arrayOfObjects
中同一对象中的每对key1
和key2
。
此外,如果key1
的值在对象中更新arrayOfObjects
,则必须反映在arrayOfSubobjects
中。key2
也是一样.
请注意,arrayOfObjects
受制于失去/获得对象。
为了使值动态更新,您需要指向相同的引用。
我想知道为什么不创建一个仅公开 key1、key2 并使用相同的数组的接口。
无论如何,如果我了解您的要求,我认为这样的事情会起作用:
interface ComplicatedObject {
key1: string;
key2: string;
}
class SubObject {
private complicatedObject: ComplicatedObject;
constructor(complicatedObject: ComplicatedObject) {
this.complicatedObject = complicatedObject;
}
get key1(): string {
return this.complicatedObject.key1;
}
get key2(): string {
return this.complicatedObject.key2;
}
}
describe('Testing ComplicatedObject -> SubObject', () => {
it('should update key1 on SubObject when Complicated Object changes', () => {
const obj: ComplicatedObject = {
key1: '1',
key2: '2'
};
const sub: SubObject = new SubObject(obj);
expect(sub.key1).toBe(obj.key1);
expect(sub.key2).toBe(obj.key2);
obj.key1 = 'edited';
obj.key2 = 'edited as well';
expect(sub.key1).toBe(obj.key1);
expect(sub.key2).toBe(obj.key2);
});
});
您可以使用map
方法。一个 Javascript 功能,它遍历给定的数组,其工作原理类似于forEach
,并将在循环结束时返回一个值。
let arrayofSubobjects;
reduceTheArray(): void {
this.arrayofSubobjects = arrayOfObjects.map(ele => {key1: ele.key1, key2: ele.key2});
}
我已经将arrayofSubobjects
声明为全局变量,并在函数中使用它来存储过滤后的值。
使用打字稿语法(标签)实现。