javascript - 使用 Object.assign 将 obj 传递给 obj

标签 javascript angularjs

所以我遇到了一些问题,我似乎不知道问题是什么,因为我似乎无法得到 vm.dataUpdate.length它返回给我一个未定义值。

function massUpdate() {
  vm.dataUpdate = Object.assign({}, vm.leaveList);

  console.log(vm.dataUpdate.length); // returning undefined

  for (var x = 0; x < vm.dataUpdate.length; x++) {
    console.log(x);
    if (vm.dataUpdate[x].actionStatus === 'edited') {
      vm.dataUpdate[x].leaveStatus = vm.dataUpdate[x].action.actionName;
      console.log(vm.dataUpdate = vm.dataUpdate[x]);
    }
  }
}

编辑

vm.leaveList

[
{
    "_id": "5a0e86e1cd39a911e3be8252",
    "comment": "\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\"",
    "leaveSupervisor": "Barrack Obama",
    "leaveDays": "2",
    "leaveType": "Sick Leave",
    "fullName": "michelle obama",
    "toDate": "2017-11-17T16:00:00.000Z",
    "fromDate": "2017-11-16T16:00:00.000Z",
    "user": "admin123",
    "__v": 0,
    "leaveDateCreated": "2017-11-17T06:51:13.570Z",
    "leaveStatus": "Pending Approval"
},
{
    "_id": "5a0ea449cd39a911e3be8253",
    "comment": "my birthday",
    "leaveSupervisor": "Barrack Obama",
    "leaveDays": "1",
    "leaveType": "Birthday Leave",
    "fullName": "michelle obama",
    "toDate": "2017-11-20T16:00:00.000Z",
    "fromDate": "2017-11-20T16:00:00.000Z",
    "user": "admin123",
    "__v": 0,
    "leaveDateCreated": "2017-11-17T08:56:41.060Z",
    "leaveStatus": "Cancelled"
}]

欢迎任何建议。 谢谢

最佳答案

您应该将数组传递给Object.assign。 请参阅以下代码:

var arr = [1,2,3]

var a = Object.assign({}, arr)
var b = Object.assign([], arr)

console.log(a) // { '0': 1, '1': 2, '2': 3 }
console.log(b) // [ 1 , 2 , 3 ]

编辑

因为您使用的是 Angular,所以您也可以尝试 angular.copy 它会深度复制您的对象(在本例中为数组),这样您就可以在更改 vm.dataUpdate 的属性时避免副作用

vm.dataUpdate = angular.copy(vm.leaveList)

关于javascript - 使用 Object.assign 将 obj 传递给 obj,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47384539/

相关文章:

javascript - Chrome 消息传递。 Uncaught Error : Error connecting to extension

angularjs - 一起测试 Parse Promise 和 $http 请求时出错

javascript - 数组在 ng 重复期间以 Angular 拼接错误的项目

javascript - 将数组列表复制到另一个数组列表

AngularJS - 从子指令访问父指令属性

javascript - 在 Angular Directive(指令)中更改 css 属性值

javascript - FireFox 和 Chrome 中的 Lync 状态

javascript - 从书签上传当前 html 页面的内容

javascript - 我的 IF 语句不正确吗?

javascript - 两个数组相等测试