javascript - 实现 Lodash Invert
问题描述
我正在处理一个需要我自己实现 .invert() 方法的挑战。以下是我的解决方案,但预期结果与返回的实际结果不匹配。请参阅下面的第二个块。
实现 .invert() 方法:
const _ = {
invert(object) {
let newObject = {};
for (let key in object) {
const originalValue = object[key]
newObject = {
originalValue: key
}
}
return newObject;
}
};
用下面的代码测试:
var obj1 = { 'a': '1', 'c': '1', 'b': '2' };
console.log(_.invert(obj1));
我希望看到下面的返回:
{ '1': 'c', '2': 'b' }
实际返回值如下:
{ originalValue : 'c'}
我做错了什么,但不知道是什么...有人可以帮忙吗?
解决方案
不要为newObject
每个循环分配一个新值,而是尝试向当前对象添加一个新键:
const _ = {
invert (object) {
let newObject = {};
for (let key in object) {
const originalValue = object[key];
newObject[originalValue] = key;
}
return newObject;
}
};
编辑:由于这已被接受为答案,我想提一下,就个人而言,我更喜欢Ori Drori提出的解决方案。
也就是说,这个答案更接近问题作者的原始实现,我认为这是理解必要更改的更好方法。但是,如果您只是为了代码来回答这个问题,我会邀请您尝试理解和使用 Ori Drori 的版本。
推荐阅读
- c++ - 给定一个大小为 N 的数组 S,检查是否可以将序列拆分为两个序列
- html - 在 div 内缩放 SVG
- python - 如何检查 Tensorflow1.X 中是否存在变量?
- c++ - RocksDB:抛出未处理的异常:读取访问冲突
- docker - 港口 - 内部服务器问题 - 代码 500 - 调整磁盘空间大小后
- c# - 有没有更好的方法将 dbcontext 添加到 Asp.core MVC 控制器?
- c++ - 如何用好无文档的模板类?
- php - Impossible to log in to Backoffice in PrestaShop 1.7.2.0
- react-native - 内置的 react 原生组件是纯的吗?
- javascript - jsPlumb:如何建立条件连接