所以我遇到了一些问题,我似乎不知道问题是什么,因为我似乎无法得到 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/