javascript中是否有等效方法可以在哈希中切换键
例如
Eg. {x: 50, y: 75, data: 99}, to {x: 50, y: 99, data: 75}
答案 0 :(得分:1)
我会使用reduce
hash = { name: 'Rob', age: '28' }
Object.keys(hash).reduce((object, key) => {
object[key.toUpperCase()] = hash[key];
console.log(object);
return object;
}, {});
基本上,正在发生的事情是迭代哈希对象键的数组。对于每个键,我更改一个空对象(最后一个参数),将具有所需转换的键声明为该对象上的属性,然后为其分配哈希对象上相应属性的值。然后使用更改的对象代替初始的空对象,并且函数递归调用自身直到数组的结尾。减少是很棒的,如果你是JS的新手,我强烈建议更多地了解它!所有的函数数组方法(map,filter,reduce,forEach)都值得研究。
详细了解reduce here:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce?v=a
您将不得不编写一个交换对象密钥的函数
const propSwap = (obj1, key1, key2, obj2) => {
obj2 = obj2 || JSON.parse(JSON.stringify(obj1));
obj1[key2] = obj2[key1];
obj1[key1] = obj2[key2];
return obj1;
}
第一行使得obj2是一个可选参数
遗憾的是,javascript标准库并不是非常深,但您可以使用我上面概述的方法分别完成这两项操作。如果您有任何问题,请告诉我们!
答案 1 :(得分:0)
你可以这样做:
const transformed = Object.entries(hash).reduce((aggr, [key, value]) => {
aggr[key.toUpperCase()] = value;
return aggr;
}, {});