遍历对象,从Z整理键-反向字母

问题描述 投票:0回答:1

我正在寻找一种方法来反转按字母顺序排列的对象键。当前,它可以按字母顺序正确存储,确保其正确反转键的最佳方法是什么?我看到数组有很多选项可以反向循环,但没有看到对象的任何东西。是否可以“取消转移”那些减少出口的钥匙?

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": ""
    }]
  };
javascript reduce
1个回答
0
投票

您不能确保注释中说明的添加普通对象的键的顺序。

您可以使用如评论中所述的已排序键数组,也可以使用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; }
© www.soinside.com 2019 - 2024. All rights reserved.