如何使用angular将逗号分隔的字符串转换为json对象类型

时间:2016-05-17 03:53:58

标签: javascript angularjs json

作为角度js的初学者,我很惊讶将逗号分隔的字符串从MySQL db转换为波纹管类型的json对象 输入:

excellent,very_good,good,poor

输出:

 Object {excellent: "excellent", very_good: "very_good", good: "good",poor: "poor" }

我试过

 var data='excellent,very_good,good,poor';
 if(data!=null){
    data= data.split(',').reduce((res,x)=>{
      res[x] = x;
      return res
    },{});
}
console.log(data);

它有效,但问题是它在Safari中不支持。

4 个答案:

答案 0 :(得分:1)

可能是由于 reduce() 的兼容性问题,因此请使用简单的for loop代替



var data = 'excellent,very_good,good,poor';

var strArr = data != null ? data.split(',') : [],
  res = {};

for (var i = 0; i < strArr.length; i++)
  res[strArr[i]] = strArr[i];

document.write('<pre>' + JSON.stringify(res, 0, 3) + '</pre>');
&#13;
&#13;
&#13;

或者查看旧浏览器的reduce polyfill选项。

答案 1 :(得分:0)

以下是应该完成工作的示例代码:

&#13;
&#13;
var data = 'excellent,very_good,good,poor';
var item = '';
var result = {};

if(data !== null) {
  data = data.split(',');
  
  for(var i = 0; i < data.length; i++) {
    item = data[i].trim();
    
    result[item] = item;
  }
}

console.log(result);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

var app = angular.module('myApp', []);
app.controller('formCtrl', function($scope) {
  var data = 'excellent,very_good,good,poor';
  var jsonfied = {
    dataObj: data.replace(/,$/, "").split(",").map(function(name) {
      return {
        name: name
      };
    })
  };
  $scope.master = jsonfied;
});
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>

<body>
  <div ng-app="myApp" ng-controller="formCtrl">
    Maser :- {{master}}
    <br/>
    <br/>
  </div>
</body>

</html>

答案 3 :(得分:0)

你也可以这样做

var data = "excellent,very_good,good,poor".split(','),
    res = {};
angular.forEach(data, function(value, key){
   res[value] = value;
});
console.log(res);

我希望能得到帮助。