相关疑难解决方法(0)

如何动态合并两个JavaScript对象的属性?

我需要能够在运行时合并两个(非常简单的)JavaScript对象.例如,我想:

var obj1 = { food: 'pizza', car: 'ford' }
var obj2 = { animal: 'dog' }

obj1.merge(obj2);

//obj1 now has three properties: food, car, and animal
Run Code Online (Sandbox Code Playgroud)

有没有人有这个脚本或知道内置的方法来做到这一点?我不需要递归,我不需要合并函数,只需要平面对象上的方法.

javascript javascript-objects

2338
推荐指数
33
解决办法
122万
查看次数

Lodash - .extend()/ .assign()和.merge()之间的区别

Lodash库中,有人可以提供合并扩展/分配的更好解释.

这是一个简单的问题,但答案却避开了我.

javascript lodash

448
推荐指数
5
解决办法
28万
查看次数

如何深度合并而不是浅合并?

无论Object.assign对象传播只能做一浅合并.

问题的一个例子:

// No object nesting
const x = { a: 1 }
const y = { b: 1 }
const z = { ...x, ...y } // { a: 1, b: 1 }
Run Code Online (Sandbox Code Playgroud)

输出是你所期望的.但是如果我试试这个:

// Object nesting
const x = { a: { a: 1 } }
const y = { a: { b: 1 } }
const z = { ...x, ...y } // { a: { b: 1 } }
Run Code Online (Sandbox Code Playgroud)

代替

{ a: …
Run Code Online (Sandbox Code Playgroud)

javascript spread-syntax

289
推荐指数
22
解决办法
14万
查看次数

使用ES6合并两个对象

我确定之前已经问过这个问题,但我找不到我想要的答案,所以这里有:

我有两个对象,如下:

const response = {
  lat: -51.3303,
  lng: 0.39440
}

let item = {
  id: 'qwenhee-9763ae-lenfya',
  address: '14-22 Elder St, London, E1 6BT, UK'
}
Run Code Online (Sandbox Code Playgroud)

我需要将这些合并在一起形成:

item = {
  id: 'qwenhee-9763ae-lenfya',
  address: '14-22 Elder St, London, E1 6BT, UK',
  location: {
    lat: -51.3303,
    lng: 0.39440
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以这样做:

item.location = {}
item.location.lat = response.lat
item.location.lng = response.lng
Run Code Online (Sandbox Code Playgroud)

但是,我觉得这不是最好的方法,因为ES6引入了很酷的解构/分配东西; 我尝试深度对象合并,但遗憾的是不支持:(我也查看了一些ramda函数,但看不到任何适用的东西.

那么使用ES6合并这两个对象的最佳方法是什么?

javascript ecmascript-6

85
推荐指数
2
解决办法
9万
查看次数

(_.merge in ES6/ES7)Object.assign不覆盖未定义的值

lodash中有_.merge功能.我想在ES6或ES7中实现同样的功能.

有这个片段:

Object.assign({}, {key: 2}, {key: undefined})
Run Code Online (Sandbox Code Playgroud)

我想收到{key: 2}.目前我收到了{key: undefined}

不是深度合并.

可能吗?如果是,那么如何实现呢?

javascript babel ecmascript-6 lodash ecmascript-7

15
推荐指数
3
解决办法
4100
查看次数

es6 相当于 angular.extend(this, object)

想要复制一个类或对象。是否有 ES6 等价物angular.extend()

希望将现有的 angular 控制器转换为 es6,但不想将其与 angularian 实现结合起来。

angularjs ecmascript-6

1
推荐指数
1
解决办法
2049
查看次数