将JavaScript对象转换为其他格式

时间:2016-04-26 16:02:02

标签: javascript angularjs

我正在尝试将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?

2 个答案:

答案 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;
&#13;
&#13;

试试这个

  var array = [{'values':[]}];
  angular.forEach($scope.name_person,function(item,i){
     array[0].values.push(item);
  });

  $scope.name_person = [];
  $scope.name_person = array;