作为角度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中不支持。
答案 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;
或者查看旧浏览器的reduce polyfill选项。
答案 1 :(得分:0)
以下是应该完成工作的示例代码:
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;
答案 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);
我希望能得到帮助。