我正在尝试将JavaScript对象转换为其他对象。
假设我的JavaScript输入对象如下所示:
$scope.name_person= [{
"firstName":"Jean","lastName":"Smith"
}]
输出应该是这样的:
$scope.name_perso= [{
"values":[
"firstName":"Jean","lastName":"Smith"
]
}]
这是我的代码:
function convert(arr) {
return $.map(unique(arr), function(name){
return {
values: $.grep(arr, function(item){
return item.name == name
})
}
});
}
function unique(arr) {
var result = [];
$.map(arr, function(item){
if ($.inArray(item.name, result))
result.push(item.name);
})
return result;
}
$scope.data=convert($scope.name_person);
任何Adivice?
答案 0 :(得分:0)
$scope.name_person= [{
"values":[
"firstName":"Jean","lastName":"Smith"
]
}]
您正在尝试创建关联数组,但Javascript不支持关联数组,因为您需要使用对象(也是具有键:值对的特殊类型的数组)。
你能做的是:
var $scope = {};
$scope.newObject = [];
$scope.namePerson = [{
"firstName":"Jean","lastName":"Smith"
}];
$scope.newObject.push(
{
"values": $scope.namePerson[0]
}
);
console.log($scope.newObject);
这将返回
[{
"values":{
"firstName":"Jean","lastName":"Smith"
}
}]
答案 1 :(得分:0)
var app = angular.module("testApp", []);
app.controller('testCtrl', function($scope){
$scope.name_person= [{
"firstName":"Jean","lastName":"Smith"
}];
var array = [{'values':[]}];
angular.forEach($scope.name_person,function(item,i){
array[0].values.push(item);
});
$scope.name_person = [];
$scope.name_person = array;
console.log(array);
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="testApp" ng-controller="testCtrl">
<pre>{{name_person | json}}</pre>
</div>
&#13;
试试这个
var array = [{'values':[]}];
angular.forEach($scope.name_person,function(item,i){
array[0].values.push(item);
});
$scope.name_person = [];
$scope.name_person = array;