将一个对象变成一个对象数组
Making an object into an array of objects
我有一个对象,其中包含一个数组和一些我需要传递给后端的其他值,但后端需要将其作为对象数组接收。我通过使用复选框和其他值(docentid、vakid、klasid)通过单击字段来填充数组($scope.student)。
具有数组和值的对象:
$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。映射函数 returns 一个空数组,其中 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'
}
};
我有一个对象,其中包含一个数组和一些我需要传递给后端的其他值,但后端需要将其作为对象数组接收。我通过使用复选框和其他值(docentid、vakid、klasid)通过单击字段来填充数组($scope.student)。
具有数组和值的对象:
$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。映射函数 returns 一个空数组,其中 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'
}
};