gpt4 book ai didi

javascript - 将数组/对象键值替换为另一个数组/对象 javascript 中的键值

转载 作者:行者123 更新时间:2023-12-03 10:56:21 25 4
gpt4 key购买 nike

我的问题是基于如何将一个 JS 对象中的数据合并到另一个 JSON 对象中,以便通过将其映射到另一个对象中的键和值来替换其当前值。

在此示例中,我有 xy,它们只是给出日期和数字。不过,我还有另外 3 个键,它们的值是下面示例中另一个对象中的键。这些键是:

  • pf
  • nf
  • t

目标是通过用匹配键值替换该值来修改当前的 JSON 对象,或者使用相同的替换创建一个新的 JSON 对象。唯一需要注意的是,有时原始对象的值为 null,在这种情况下,在合并或创建新 JSON 后它们应保持为 null。

        var data = [

{x: Date.UTC(2014,8,1), y: 730, pf:["001","002"], nf:["001","002"], t:["001","002"] },
{x: Date.UTC(2014,10,1), y: null, pf:null, nf:null, t:null},
]


var pfMap={
"001":{"sd":"short desc1", "ld":"long desc1"},
"002":{"sd":"short desc2", "ld":"long desc2"}
}

var nfMap={
"001":{"sd":"short desc1", "ld":"long desc1"},
"002":{"sd":"short desc2", "ld":"long desc2"}
}

var tMap={
"001":"tip text1",
"002":"tip text2"
}

作为示例,新的 JSON 对象将具有一个由两个结果键组成的数组,如果没有任何内容,则为 null。希望这是有道理的。

最佳答案

       var data = [

{x: Date.UTC(2014,8,1), y: 730, pf:["001","002"], nf:["001","002"], t:["001","002"] },
{x: Date.UTC(2014,10,1), y: null, pf:null, nf:null, t:null},
]


var pfMap={
"001":{"sd":"short desc1", "ld":"long desc1"},
"002":{"sd":"short desc2", "ld":"long desc2"}
}

var nfMap={
"001":{"sd":"short desc1", "ld":"long desc1"},
"002":{"sd":"short desc2", "ld":"long desc2"}
}

var tMap={
"001":"tip text1",
"002":"tip text2"
}


//recursion

function traverseData(data, elementName)
{
var keys = Object.keys(data);
for (var i = 0; i < keys.length; ++i)
{
if ( Object.prototype.toString.call(data[keys[i]]) == "[object Object]" || Object.prototype.toString.call(data[keys[i]]) == "[object Array]")
{
traverseData(data[keys[i]], keys[i]);
}
else
{
if (elementName != null && window[elementName + "Map"])
{
data[keys[i]] = window[elementName + "Map"][data[keys[i]]];
}

}

}

}

traverseData(data, "data");
document.write(JSON.stringify(data));

这个递归函数就可以解决问题。它忽略 null 值。否则,当对象是字符串并且与 map 对象之一匹配时,它将替换该值。您可以使用此函数深入 n 层。

关于javascript - 将数组/对象键值替换为另一个数组/对象 javascript 中的键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28257543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com