Javascript typescript循环对象并通过转换值创建新对象
鉴于以下目标Javascript typescript循环对象并通过转换值创建新对象,javascript,typescript,Javascript,Typescript,鉴于以下目标 const document = { id: 'f8bbe6dd-25e3-464a-90e2-c39038d030e5', fields: { lastname: 'TestLastName', firstname: 'TestFirstName' } } 如何使用typescript/javascript将其转换为接口命中的对象 export interface Hit { id: string; fields: { [key: s
const document = {
id: 'f8bbe6dd-25e3-464a-90e2-c39038d030e5',
fields: {
lastname: 'TestLastName',
firstname: 'TestFirstName'
}
}
如何使用typescript/javascript将其转换为接口命中的对象
export interface Hit {
id: string;
fields: { [key: string]: string[] };
}
预期结果如下
document = {
id: 'f8bbe6dd-25e3-464a-90e2-c39038d030e5',
fields: {
lastname: [
'TestLastName'
],
firstname: [
'TestFirstName'
]
}
}
如果您不需要更通用的解决方案,这将起作用:
newDocument = {id: document.id, fields: {lastname: [document.fields.lastname], firstname: [document.fields.firstname]} }
如果您不需要更通用的解决方案,这将起作用:
newDocument = {id: document.id, fields: {lastname: [document.fields.lastname], firstname: [document.fields.firstname]} }
编写一个映射对象属性的小函数,有点像映射,但用于对象
type Hash<T> = {[index: string]: T};
function map<T, U>(
obj: Hash<T>,
fn: (val: T, prop?: string, obj?: any) => U,
thisObj?
): Hash<U> {
const result: Hash<U> = {};
Object.keys(obj).forEach(key => result[key] = fn.call(thisObj, obj[key], key, obj));
return result;
}
编写一个映射对象属性的小函数,有点像映射,但用于对象
type Hash<T> = {[index: string]: T};
function map<T, U>(
obj: Hash<T>,
fn: (val: T, prop?: string, obj?: any) => U,
thisObj?
): Hash<U> {
const result: Hash<U> = {};
Object.keys(obj).forEach(key => result[key] = fn.call(thisObj, obj[key], key, obj));
return result;
}
你可以简单地分开
export interface Hit {
id: string;
fields: Field;
}
export interface Field {
[index: string]:string[];
}
灵感来自下面的答案,你可以在
你可以简单地分开
export interface Hit {
id: string;
fields: Field;
}
export interface Field {
[index: string]:string[];
}
灵感来自下面的答案,你可以在
谢谢你的回复。不过我需要一个更通用的解决方案。谢谢您的回复。不过,我需要一个更通用的解决方案。对不起,我不确定您是否阅读了我的问题,但您的解决方案与我提出的问题无关。您的问题是[key:string]:string[]行,其中key可以是任何内容?当然,但这与拆分接口有什么关系?我不是在寻找接口定义。请尝试从我共享的链接中获取一些提示。您可以在那里创建通配符。这只是参考。如果它没有帮助尝试其他方法,我不确定你是否阅读了我的问题,但你的解决方案与我提出的问题无关。你的问题是[key:string]:string[]行,key可以是任何东西?当然,但这与拆分接口有什么关系?我不是在寻找接口定义。请尝试从我共享的链接中获取一些提示。您可以在那里创建通配符。这只是参考。如果它没有帮助,尝试其他东西