首页 > 解决方案 > 深入比较 javascript 对象并保留对象 1 的键和对象 2 的值

问题描述

我想深入比较 javascript 对象,保留基础对象中的键,并从基础对象中的新对象复制不同的值。

我认为这是我想保留的键和新对象的键之间的一种映射。

基础对象:

{

    name: "Will",
    lastname: "Smith",
    age: "45",
    movies : [
        {
            title: "Hancock",
            price: {
                amount: "1500"
            }
        },
        {
            title: "Gemooni",
            price: {
                amount: "2500"
            }
        }
    ]
}

要在基础对象中复制的新值:

{

    actor_name: "Will",
    actor_firstname: "Smith",
    actor_age: "45",
    cinema : [ // for movies
        {
            title: "Hancock",
            price: {
                amount: "1900"
            }
        },
        {
            title: "Gemini",
            price: {
                amount: "3000"
            }
        }
    ]
}

在这里,我想保留 actor_name 的值并将其复制到第一个对象中的一个演员。所有值都相同,包括嵌套对象。

结果 :

{

    name: "Will",
    lastname: "Smith",
    age: "45",
    movies : [
        {
            title: "Hancock",
            price: {
                amount: "1900"
            }
        },
        {
            title: "Gemini",
            price: {
                amount: "3000"
            }
        }
    ]
}

任何想法?非常感谢!

标签: javascript

解决方案


我建议你创建映射对象。

var src = {
  a1: "foo_a",
  b1: "foo_b",
}

var map = {
  a: "a1",
  b: "b1",
}

现在的解决方案是

function mapper(src,map) {
  var result = {};
  for(let i in map) result[i] = src[map[i]];
  return result;
}

var dst = mapper(src,map); // { a: "foo_a", b: "foo_b" }

这并不能直接解决深度映射,但您可以在map对象中使用特殊前缀来告诉映射器函数该值是对象。


推荐阅读