如何用lodash将一个json对象中存在的复杂json属性拷贝到另一个对象中对应的属性上
时间: 2024-03-03 11:52:06 浏览: 257
你可以使用lodash库中的`_.get()`和`_.set()`方法来实现该功能。具体步骤如下:
1. 遍历需要拷贝的属性列表,获取每个属性的值;
2. 使用`_.set()`方法将获取到的属性值设置到目标对象中对应的属性上。
示例如下:
```javascript
const _ = require('lodash');
// 定义源对象和目标对象
const sourceObj = {
name: 'Alice',
address: {
city: 'Shanghai',
street: '123 Main St.',
postalCode: '200000',
details: {
floor: 1,
unit: 'A'
}
}
};
const targetObj = {
name: 'Bob',
address: {
city: 'Beijing',
street: '456 Main St.',
postalCode: '100000',
details: {
floor: 2,
unit: 'B'
}
}
};
// 定义需要拷贝的属性列表
const propsToCopy = ['name', 'address.city', 'address.details.floor'];
// 遍历需要拷贝的属性列表
_.forEach(propsToCopy, (prop) => {
// 获取源对象中对应的属性值
const propValue = _.get(sourceObj, prop);
// 将属性值设置到目标对象中对应的属性上
_.set(targetObj, prop, propValue);
});
console.log(targetObj);
// 输出:
// {
// name: 'Alice',
// address: {
// city: 'Shanghai',
// street: '456 Main St.',
// postalCode: '100000',
// details: {
// floor: 1,
// unit: 'B'
// }
// }
// }
```
在上面的例子中,我们定义了一个源对象`sourceObj`和一个目标对象`targetObj`,并且定义了需要拷贝的属性列表`propsToCopy`,其中包括了`name`、`address.city`和`address.details.floor`三个属性。然后,我们使用`_.forEach()`方法遍历属性列表,使用`_.get()`方法获取源对象中对应的属性值,使用`_.set()`方法将属性值设置到目标对象中对应的属性上。最后,我们输出目标对象`targetObj`,可以看到属性已经被成功拷贝了。
阅读全文