给定以下两个对象:
const obj1 = {
value1: 'Hello',
value2: 'Goodbye',
value3: ['yes', 'no'],
value4: {
value5: 'Phone'
}
}
const obj2 = {
v1: 'Orange',
v2: 'Apple',
v3: ['Cat', 'Dog'],
v4: {
v5: 'Basketball'
}
}
假设键/值的结构/数量相同,我如何将第一个对象的键应用到第二个对象上?返回:
{
value1: 'Orange',
value2: 'Apple',
value3: ['Cat', 'Dog'],
value4: {
value5: 'Basketball'
}
}
任何帮助将不胜感激!
3条答案
按热度按时间q8l4jmvw1#
noj0wjuj2#
从您的问题陈述来看,您似乎想要修改obj2的键,而不需要obj1。
你可以用递归的简单方法来实现:
oyjwcjzk3#
我建议你重新考虑一下,我们可以写这样一个函数,安德鲁·帕克斯的答案是一种,下面是另一种:
例如,这确实应该是一个no-op:
obj1
的键值与定义时相同,但是现在如果你运行Andrew的代码或者我的代码,你的结果会是这样的:或者再举一个例子,当键看起来像小整数时,我们甚至不修改对象,我们的迭代顺序就不同了:
将导致:
有可能从这些混乱中恢复过来,我确信您的示例只是虚拟的示例数据,但是如果您实际上在两个对象中的键之间有直接的关系,例如
那么我们可以写一个非常简单的递归函数来解决你的问题。否则,我建议重新考虑你的方法。