Javascript 洛达斯的游击队似乎无所作为
(我找不到Lodash Slack频道,这就是我在这里发帖的原因。) 你能告诉我为什么这里面的Javascript 洛达斯的游击队似乎无所作为,javascript,lodash,Javascript,Lodash,(我找不到Lodash Slack频道,这就是我在这里发帖的原因。) 你能告诉我为什么这里面的部分似乎什么都没做吗?correctRenameKeys函数可以正确重命名所提供的对象中的键,但是ErrorRenameKeys函数不能正确重命名键,该函数的作用应该完全相同 请在浏览器中打开JavaScript控制台,以便在运行fiddle时查看日志。我用铬做了测试 const renameKeysOfOneObject=(对象,键映射)=>{ 返回u.reduce(对象、函数(结果、值、键){ 键
部分似乎什么都没做吗?correctRenameKeys
函数可以正确重命名所提供的对象中的键,但是ErrorRenameKeys
函数不能正确重命名键,该函数的作用应该完全相同
请在浏览器中打开JavaScript控制台,以便在运行fiddle时查看日志。我用铬做了测试
const renameKeysOfOneObject=(对象,键映射)=>{
返回u.reduce(对象、函数(结果、值、键){
键=键映射[键]| |键;
结果[键]=值;
返回结果;
}, {});
};
常量correctRenameKeys=(对象、键映射)=>{
const keysRenamer=object=>renameKeysOfOneObject(对象,键映射);
返回映射(对象、键重命名器);
};
常量错误重命名键=(对象、键映射)=>{
const keysRenamer=u2;.partiOK(renameKeysOfOneObject,keyMappings);
返回映射(对象、键重命名器);
};
const object={keyToBeRenamed:'someValue'};
const objects=[object];
const keyMapping={keyToBeRenamed:'newKeyName'};
const correctLyrename=correctRenameKeys(对象、键映射);
const-ErrorLyrename=ErrorRenameKeys(对象、键映射);
console.assert(u.isEqual(correctlyRenamed,errorlyrename),
“这两个对象应该相等。”+
“应将'KeyToBernamed'密钥重命名为'newKeyName'”;
console.log(已更正的Lyrename);
console.log(错误地使用了lyrename)代码>
lodash文档中有两个支持性陈述可以回答您的问题:
此方法类似于u.partial,只是部分应用了参数
附加到它接收的参数中
通过运行集合中的每个元素创建一个值数组
迭代尔。使用三个参数调用iteratee:(值,
索引(键,集合)
请注意,在lodash#map
iteratee中传递了三个参数,由于keyRenamer
作为iteratee传递,因此我们可以推断调用签名如下所示:
keyRenamer(value, index, collection, keyMappings);
如果您确实希望实现部分应用函数renameKeysOfOneObject
的第二个参数的效果,请使用
const renameKeysOfOneObject=(对象,键映射)=>{
返回u.reduce(对象、函数(结果、值、键){
键=键映射[键]| |键;
结果[键]=值;
返回结果;
}, {});
};
常量correctRenameKeys=(对象、键映射)=>{
const keysRenamer=object=>renameKeysOfOneObject(对象,键映射);
返回映射(对象、键重命名器);
};
常量错误重命名键=(对象、键映射)=>{
const keysRenamer=0.partial(renameKeysOfOneObject,0,keyMappings);
返回映射(对象、键重命名器);
};
const object={keyToBeRenamed:'someValue'};
const objects=[object];
const keyMapping={keyToBeRenamed:'newKeyName'};
const correctLyrename=correctRenameKeys(对象、键映射);
const-ErrorLyrename=ErrorRenameKeys(对象、键映射);
console.assert(u.isEqual(correctlyRenamed,errorlyrename),
“这两个对象应该相等。”+
“应将'KeyToBernamed'密钥重命名为'newKeyName'”;
console.log(已更正的Lyrename);
console.log(错误地使用了lyrename)代码>
。作为控制台包装{最小高度:100%;顶部:0}
const wrongRenameKeys = (objects, keyMappings) => {
const keysRenamer = _.partial(renameKeysOfOneObject, _, keyMappings);
return _.map(objects, keysRenamer);
};