使用公共密钥更新javascript数组

使用公共密钥更新javascript数组,javascript,arrays,Javascript,Arrays,我有2个javascript数组,包含以下内容: 阵列1: [{"key":"Agents"},{"key":"Formal"},{"key":"Annotation"},{"key":"Business"}] 阵列2: [ {"key":"Agents","class":"newclass","text":"Agents"}, {"key":"Business","class":"newclass1","text":"Business"}, {"key":"Form

我有2个javascript数组,包含以下内容:

阵列1:

[{"key":"Agents"},{"key":"Formal"},{"key":"Annotation"},{"key":"Business"}]
阵列2:

[
    {"key":"Agents","class":"newclass","text":"Agents"}, 
    {"key":"Business","class":"newclass1","text":"Business"},
    {"key":"Formal","class":"newclass2","text":"Formal"},
    {"key":"Annotation","class":"class5","text":"Annotation"},
    {"key":"Rate","class":"newclass1","text":"Rates"}
]
两个数组中的键相同。我希望通过匹配键从array2使用
类和
文本值更新array1
有没有一种方法可以在不迭代两个数组的情况下执行此操作?这只是数组的一小部分。实际值可能会稍大一些。

不幸的是,您需要迭代两个数组,以便在每个数组中找到正确的对象。即使使用内置的js原型方法,您也会在数组中进行迭代

解决这个问题的一个方法是修改您的数据结构。不要使用字典数组,而是制作一个字典字典,如下所示:

第一个阵列:

{
    "Agents": {},
    "Business": {},
    "Formal": {},
    "Annotation": {},
    "Rate": {}
}
第二个阵列:

{
    "Agents": {
        "class": "newclass",
        "text": "Agents"
    },
    "Business": {
        "class": "newclass1",
        "text": "Business"
    },
    "Formal": {
        "class": "newclass2",
        "text": "Formal"
    },
    "Annotation": {
        "class": "newclass5",
        "text": "Annotation"
    },
    "Rate": {
        "class": "newclass1",
        "text": "Rates"
    }
}

现在,您可以执行类似于
Array1[“Agents”]=Array2[“Agents”]
的操作,或者以任何方式添加数据。

如果需要新对象,您可以跨多个对象复制属性,但看起来数组一只是数组二的过滤器集-您可以简单地将第一个映射到每一个对应的第二个。无法避免对这两个数组进行迭代,但始终可以创建一个map/ID缓存,以便只对每个数组进行一次遍历

const arr1=[
{“键”:“代理”},
{“键”:“正式”},
{“键”:“注释”},
{“密钥”:“业务”}
]
常数arr2=[
{“key”:“Agents”,“class”:“newclass”,“text”:“Agents”},
{“key”:“Business”,“class”:“newclass1”,“text”:“Business”},
{“key”:“Formal”,“class”:“newclass2”,“text”:“Formal”},
{“key”:“Annotation”,“class”:“class5”,“text”:“Annotation”},
{“key”:“Rate”,“class”:“newclass1”,“text”:“Rates”}
]
const transformer=from=>{
常量缓存=from.reduce((映射,项)=>(
map[item.key]=项目,映射
), {})
return({key})=>cache[key]
}
console.log(
arr1.map(变压器(arr2))

)
您应该展示您尝试过的内容,但是,为什么不直接复制阵列呢?第二个数组中是否存在重复项?“有没有一种方法可以在不迭代两个数组的情况下进行此操作?”noI尝试迭代两个数组,但不太擅长javascript,因此只想澄清/确认是否存在其他方法。也无法复制数组,因为第二个数组可能有更多我不想添加的项。谢谢,这是一个很好的建议,我必须看看是否可以修改现有数组以生成这种结构。