代码之家  ›  专栏  ›  技术社区  ›  meallhour

如何在NodeJs中修改数组中的Json密钥名

  •  0
  • meallhour  · 技术社区  · 6 年前

    let rows = function1();
    

    rows 看起来像:

    "rows": [
        {
        "Hostname": "abc123",
        "name": "name1",
        "Status": "PASS",
        "Heading": "Not Applicable"
        },
        {
        "Hostname": "abc123",
        "name": "name2",
        "Status": "FAIL",
        "Heading": "Not Applicable"
        }
    ]
    

    可以有任意数量的Json元素:

    "rows": [
        {
        "Hostname": "abc123",
        "name": "name1",
        "Status": "PASS",
        "Heading": "Not Applicable"
        },
        {
        "Hostname": "abc123",
        "name": "name2",
        "Status": "FAIL",
        "Heading": "Not Applicable"
        },
        {
        "Hostname": "abc123",
        "name": "name3",
        "Status": "FAIL",
        "Heading": "Not Applicable"
        },
     ...
    ]
    

    Hostname 会留下名字,

    我想修改 rows array

    "rows": [
        {
        "Hostname": "abc123",
        "name1Status": "PASS",
        "name1Heading": "Not Applicable"
        "name2Status": "FAIL",
        "name2Heading": "Not Applicable"
        "name3Status": "FAIL",
        "name3Heading": "Not Applicable"
         ...
    ]
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Ivan S    6 年前

    如果你理解正确,那么你需要达到这个结果。 为此使用reduce,使用数组非常方便

    const rows = [
        {
        "Hostname": "abc123",
        "name": "name1",
        "Status": "PASS",
        "Heading": "Not Applicable"
        },
        {
        "Hostname": "abc123",
        "name": "name2",
        "Status": "FAIL",
        "Heading": "Not Applicable"
        }
    ]
    const res = rows.reduce((acc, rec) => {
    	let result = { ...acc, [`Hostname`]: rec.Hostname,  [`${rec.name}Status`]: rec.Status, [`${rec.name}Heading`]: rec.Heading  }
    	return result
    }, [])
    console.log(res)