2017-05-07 18 views
1

私は角度配列$scope.itemsをjsonオブジェクトに変換したいと思います。私はJSON.stringify()を使用して、それを変換しようとしてきたが、それはいつもここに私のコードです[]

を返します。

$scope.items = []; 

var scopeItems = {}; 

scopeItems = JSON.stringify($scope.items); 

console.log(scopeItems); 

私は私のコードで参照としてthis linkを使用しています。

私はここで間違っていますか?

私を助けることができる誰もありがとう!

+0

のようなJavaScriptのreduceを使用し、その後JSON.stringifyはあなたの文字列ではないオブジェクトを返します。また、JSON.parseは配列をオブジェクトに変換しません。配列自体はjavascriptでオブジェクトです – binariedMe

+0

よくafaik、JSON.stringify([])は確かに '' [] '' whats strange there – mehulmpt

+0

あなたはどんな結果を期待していますか? JSONのオブジェクトは '{}'で囲まれ、配列は '[]'で囲まれています。 –

答えて

2

JSON.stringify配列を文字列に変換します。オブジェクトにではありません。あなたがオブジェクトに変換したい場合は、この

$scope.items = ["item1","item2"]; 

var scopeItems = {}; 

scopeItems = $scope.items.reduce(function(acc, cur, i) { 
    acc[i] = cur; 
    return acc; 
}, {}); 

console.log(scopeItems); 

デモ

angular.module("app",[]) 
 
.controller("ctrl",function($scope){ 
 

 
$scope.items = ["item1","item2"]; 
 

 
    var scopeItems = {}; 
 
    
 
    scopeItems = $scope.items.reduce(function(acc, cur, i) { 
 
    debugger 
 
     acc[i] = cur; 
 
     return acc; 
 
    }, {}); 
 
    
 
    console.log(scopeItems); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="ctrl"> 
 
    
 
</div>

+0

これは私のために働いています。ありがとうございました!しかし、私は 'reduce'のためのドキュメントを読んだときに配列とどのように動作するのか分からないので、私は実際にそのコードで何が起こっているのか分からないので、少し時間を取ることができます。 –

+0

我々は、配列全体を反復するために 'reduce'を呼び出し、各反復に対して3つのパラメータを渡します。それらは 'accumulator、currentValue、currentIndex'です。初期値が利用可能な場合、アキュムレータは初期値と等しい。ここでは最初は空であるため、 'currentValue'はアキュムレータの最初の特性に割り当てられます(' acc [i] = cur')。それを返す –

+0

ありがとう、あなたの時間のために!今私にとってもっと理解できる。ほんとうにありがとう。再度、感謝します! –

関連する問題