繁体   English   中英

将对象变成对象数组

[英]Making an object into an array of objects

我有一个对象,它包含一个数组以及需要传递给后端的两个其他值,但是后端需要将其作为对象数组接收。 我通过使用复选框来填充数组($ scope.student),并通过单击一个字段来填充其他值(docentid,vakid,klasid)。

具有数组和值的对象:

$scope.user = {
studentid: [$scope.student],
vakid: '',
klasid: ''
};

映射功能:

var dataToSend = [$scope.user.studentid].map(function(s) { 
    return { 
        vakid: $scope.user.vakid, klasid: $scope.user.klasid, studentid: s 
    }; 
});

现在,当我登录用户时,我看到:

Object {studentid: Array[5], //Amount of results checked
vakid: "Alfreds Futterkiste", 
klasid: "Berlin"}

我想将其放入包含多个对象的数组中,因此每个对象将具有数组vakid和klasid的唯一值。 映射函数返回一个空数组,其中vakid,klasid和studentid为空。

我究竟做错了什么?

您不需要[$scope.user.studentid].map ,而是$scope.user.studentid.map

 var $scope = {}; $scope.user = { studentid: [1, 2, 3, 'a', 'b', 'c'], vakid: 'vak', klasid: 'klas' }; var dataToSend = $scope.user.studentid.map(function(s) { return { vakid: $scope.user.vakid, klasid: $scope.user.klasid, studentid: s }; }); d = document.getElementById('result'); console.log(d) d.innerHTML = JSON.stringify(dataToSend); 
 <div id="result"></div> 

您实际上想映射$scope.user.studentid数组中的值,另一个版本[$scope.user.studentid].map )映射到包装该数组的数组,如下所示:

[[1, 2, 3, "a", "b", "c"]].map(/*...*/)

调用map并没有给出预期的结果。

同样,在您的示例中,未正确定义$ scope。 您无法在$scopeuser属性存在之前对其进行设置(就像尝试使用$scope.user = ... 。您可以按照我的示例进行定义,或如下所示:

var $scope = {
  user: {
    studentid: [1, 2, 3, 'a', 'b', 'c'],
    vakid: 'vak',
    klasid: 'klas'
  }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM