[英]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。 您无法在$scope
的user
属性存在之前对其进行设置(就像尝试使用$scope.user = ...
。您可以按照我的示例进行定义,或如下所示:
var $scope = {
user: {
studentid: [1, 2, 3, 'a', 'b', 'c'],
vakid: 'vak',
klasid: 'klas'
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.