基于键名的组织对象-Underscore.js

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

寻找采取该物品的方法

var config = {
    "F2-1_largerLegal-input": "F2-1_largerLegal-input",
    "F2-1_copy-font": "Ultra",
    "F2-3_copy-fontSize": "12",
    "F2-1_copy-input": "F2-1_copy-input",
    "F2-1_frameLegal-input": "Ultra",
    "F2-1_frameLegal-fontSize": "14",
    "F2-2_copy-input": "F2-2_copy-input",
    "F2-3_copy-input": "F2-3_copy-input",
    "F2-3_copy-font": "Medium",
    "F2-1_copy-fontSize": "10",
    "F2-1_product-src": "250/50/F2-1_product.png",
    "F2-2_copy-font": "Medium",
    "F2-2_copy-fontSize": "11",
    "F2-1_largerLegal-fontSize": "13"
};

并使用'underscore.js'将其转换为如下所示的对象结构。

var config = {
    "F2":{
        "copy":{
            "F2-1_copy-input": "F2-1_copy-input",
            "F2-1_copy-font": "Ultra",
            "F2-3_copy-fontSize": "12",
            "F2-2_copy-input": "F2-2_copy-input",
            "F2-3_copy-input": "F2-3_copy-input",
            "F2-3_copy-font": "Medium",
            "F2-1_copy-fontSize": "10",
            "F2-2_copy-font": "Medium",
            "F2-2_copy-fontSize": "11"
        },
        "frameLegal": {
            "F2-1_frameLegal-input": "Ultra",
            "F2-1_frameLegal-fontSize": "14"
        },
        "largerLegal":{
            "F2-1_largerLegal-input": "F2-1_largerLegal-input",
            "F2-1_largerLegal-fontSize": "13"
        }
        "src": {
            "F2-1_product-src": "250/50/F2-1_product.png",
        }
    }
};

他们的最佳实践是否是循环对象和返回对象?每当我尝试该对象的值为空时。

javascript underscore.js
1个回答
0
投票

如何使用JavaScript的reduce功能。它将为您解决问题。

var config = { "F2-1_largerLegal-input": "F2-1_largerLegal-input", "F2-1_copy-font": "Ultra", "F2-3_copy-fontSize": "12", "F2-1_copy-input": "F2-1_copy-input", "F2-1_frameLegal-input": "Ultra", "F2-1_frameLegal-fontSize": "14", "F2-2_copy-input": "F2-2_copy-input", "F2-3_copy-input": "F2-3_copy-input", "F2-3_copy-font": "Medium", "F2-1_copy-fontSize": "10", "F2-1_product-src": "250/50/F2-1_product.png", "F2-2_copy-font": "Medium", "F2-2_copy-fontSize": "11", "F2-1_largerLegal-fontSize": "13"};

result = Object.entries(config).reduce((acc, [key, value])=>{
   const [keyInput] = key.split("-");
   const [nestedKey] = key.split("_")[1].split('-');
   acc[keyInput] = acc[keyInput] || {};
   acc[keyInput][nestedKey] = acc[keyInput][nestedKey] || {};
   val = {}
   val[key] = value;
   acc[keyInput][nestedKey] = Object.assign(acc[keyInput][nestedKey], val);
   return acc;
},{});

console.log(result);
© www.soinside.com 2019 - 2024. All rights reserved.