javascript
  • angularjs
  • json
  • 2016-05-17 59 views 0 likes 
    0

    如角的js初學者,我打從MySQL逗號分隔字符串轉換分貝波紋管式的JSON對象 輸入:我怎麼能一個逗號分隔字符串轉換成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

    你在Safari瀏覽器中看到任何錯誤嗎? – brk

    回答

    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);

    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>');


    或者檢查舊的瀏覽器reduce polyfill選項。

    +0

    它工作.. @Pranav感謝哥們(y) –

    +0

    @VishnuSBabu:很高興幫助你 –

    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>

    0

    你還不如做

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

    我希望能有所幫助。

    相關問題