我正在寻找一种方法来反转按字母顺序排列的对象键。当前,它可以按字母顺序正确存储,确保其正确反转键的最佳方法是什么?我看到数组有很多选项可以反向循环,但没有看到对象的任何东西。是否可以“取消转移”那些减少出口的钥匙?
var alph = Object.keys(feedData)
.sort()
.reduce(function (acc, key) {
acc[key] = feedData[key];
return acc;
}, {});
console.log(alph);
var config = {
"size": [{
"F2-1_largerLegal-input": "",
"F3-1_copy-font": "",
"Frame-Three": "",
"_assetKey": "",
"F3-2_copy-fontSize": "",
"_jvxRtnWeight": "",
"CTA-1_copy-fontSize": "",
"F2-1_copy-font": "",
"EF-1_largerLegal-fontSize": "",
"reportingName": "",
"EF-2_copy-fontSize": "",
"EF-2_copy-font": "",
"F2-3_copy-fontSize": "",
"Frame-One": "",
"assetVarient": "",
"F3-1_largerLegal-fontSize": "",
"EF-1_product-src": "",
"F3-1_frameLegal-input": "",
"F3-1_frameLegal-fontSize": "",
"F3-1_copy-input": "",
"F2-1_copy-input": "",
"EF-3_copy-fontSize": "",
"F2-1_frameLegal-input": "",
"F3-3_copy-fontSize": "",
"F3-2_bg-src": "",
"EF-1_copy-input": "",
"F2-1_frameLegal-fontSize": "",
"F2-2_copy-input": "",
"F2-3_copy-input": "",
"F3-3_copy-input": "",
"EF-1_largerLegal-input": "",
"EF-1_copy-font": "",
"EF-1_frameLegal-fontSize": "",
"F3-3_copy-font": "",
"RO-1_legal-input": "",
"EF-1_frameLegal-input": "",
"F2-3_copy-font": "",
"EF-2_copy-input": "",
"End-Frame": "",
"F3-2_copy-input": "",
"F2-1_copy-fontSize": "",
"F2-1_product-src": "",
"F2-2_copy-font": "",
"rotation": "",
"F3-2_copy-font": "",
"exitUrl": "",
"EF-3_copy-input": "",
"CTA-1_copy-input": "",
"F3-1_copy-fontSize": "",
"EF-1_copy-fontSize": "",
"Frame-Two": "",
"F3-1_bg-src": "",
"EF-3_copy-font": "",
"weighTag": "",
"F3-1_largerLegal-input": "",
"F2-2_copy-fontSize": "",
"dimensions": "",
"F2-1_largerLegal-fontSize": ""
}]
};
您不能确保注释中说明的添加普通对象的键的顺序。
您可以使用如评论中所述的已排序键数组,也可以使用Map对象,并且可以按键添加的顺序在本地进行迭代。
这里是一个例子:
const initObj = {
"a": 1,
"c": 3,
"b": 2,
"e": 5,
"d": 4
}
//Option 1, created a sorted array of keys:
const sortedKeys = Object.keys(initObj).sort((a,b) => b.localeCompare(a));
console.log(sortedKeys);
//now loop over your initObj using our sortedKeys:
console.log("using sortedKeys:");
for (let key of sortedKeys){
console.log(key, initObj[key]);
}
//Option 2, use a Map object:
const mapObj = new Map(Object.entries(initObj).sort(([key_a, a],[key_b, b]) => key_b.localeCompare(key_a)));
//now loop over your Map Object directly:
console.log("using mapObj:");
for (let [key, val] of mapObj){
console.log(key, val);
}
.as-console-wrapper { max-height: 100% !important; top: 0; }