2017-05-07 3 views
1

json 객체로 변환하려는 각 배열 $scope.items이 있습니다. 내 코드에서 참조로 this link 사용하고

$scope.items = []; 

var scopeItems = {}; 

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

console.log(scopeItems); 

: 나는 JSON.stringify()를 사용하여 변환하기 위해 노력했습니다하지만 항상 []

로 반환하는 것은 여기에 내 코드입니다.

내가 뭘 잘못하고 있니?

나를 도울 수있는 사람을 보내 주셔서 감사합니다.

+0

JSON.stringify 당신에게 문자열이 아닌 객체를 반환과 같은 자바 스크립트 reduce를 사용합니다. 또한 JSON.parse는 배열을 객체로 변환하지 않습니다. 배열 자체는 자바 스크립트에 객체입니다 – binariedMe

+0

잘 afaik, JSON.stringify ([]) 실제로는 [] [] 무엇'이상한게 뭔지 – 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

대단히 당신의 시간 동안 당신을 감사하십시오! 지금 나에게 더 이해할 수있다. 정말 감사. 다시 한 번 감사드립니다! –

관련 문제