gpt4 book ai didi

javascript - typescript 循环遍历对象并通过转换值创建一个新对象

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

给定以下对象,

const document = {
id: 'f8bbe6dd-25e3-464a-90e2-c39038d030e5',
fields: {
lastname: 'TestLastName',
firstname: 'TestFirstName'
}
}

如何使用 typescript/javascript 将其转换为 Hit 接口(interface)的对象?

export interface Hit {
id: string;
fields: { [key: string]: string[] };
}

预期结果如下。

document = {
id: 'f8bbe6dd-25e3-464a-90e2-c39038d030e5',
fields: {
lastname: [
'TestLastName'
],
firstname: [
'TestFirstName'
]
}
}

最佳答案

编写一个映射对象属性的小函数,有点像映射,但针对的是对象。

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;
}

然后将其应用到您的fields 属性:

function transform(obj): Hit {
const {id, fields} = obj;

return {id, fields: map(obj.fields, x => [x])};
};

关于javascript - typescript 循环遍历对象并通过转换值创建一个新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42145229/

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