2015-01-09 1 views
0

: underscorejs 사용Underscorejs - JSON 배열의 변화 값 I가 서버로부터 JSON 오브젝트의 배열을

var a = [ 
{id:1,name:"Piano",class:"Instrument"}, 
{id:2,name:"Guitar",class:"null"}, 
{id:3,name:"null",class:"null"},.....] 

이러한 개체를 통해 루프로 가능하며 빈 문자열을 각 키마다 "null" 값을 변경 ""?

+1

function customParser(key, value) { if (value.name === 'null') { value.name = ''; } if (value.class === 'null') { value.class = ''; } return value; } var jsonText = '[{"id":1,"name":"Piano","class":"Instrument"},{"id":2,"name":"Guitar","class":"null"},{"id":3,"name":"null","class":"null"}]', a = JSON.parse(jsonText, customParser); document.body.appendChild(document.createTextNode(JSON.stringify(a)));

예, 그것은 완전하게 가능하다. 일반 자바 스크립트에서도 가능합니다. 뭐 해봤 니? 무엇이 문제였습니까? – Xotic750

+0

밑줄로 시도했지만 성공하지 못했습니다. 이 배열의 모든 null 값을 빈 문자열로 변경해야합니다. – Tomislav

+0

코드가 무엇이며 어떻게 성공하지 못했습니까? – Xotic750

답변

2

_.each() * 메서드를 사용하여 컬렉션 및 해당 개체를 반복하고 "null"값을 빈 문자열로 바꿉니다. 따라서 논리는 중첩 된 루프를 사용하여 2 차원 배열을 반복하는 것과 같습니다.

* _.map()을 사용하는 것이 좋습니다.이 방법은 새로운 수정 된 배열을 생성 할 것이므로 필요하지 않은지 모르겠지만 매핑 기능 내에 _.each(obj)을 사용하여 배열을 매핑 할 수도 있습니다.

var arr, 
 
    searchVal, 
 
    replaceVal; 
 

 
arr = [ 
 
    {id: 1, name: "Piano", class: "Instrument"}, 
 
    {id: 2, name: "Guitar", class: "null"}, 
 
    {id: 3, name: "null", class: "null"} 
 
]; 
 

 
searchVal = "null"; 
 
replaceVal = ""; 
 

 
_.each(arr, function(obj) { 
 
    _.each(obj, function(value, key) { 
 
    if(value === searchVal) { 
 
     obj[key] = replaceVal; 
 
    } 
 
    }); 
 
}); 
 

 
console.log(arr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore-min.js"></script>
하는 대신 JSON 문자열에서 구문 분석 후 모든 데이터를 통해 반복의

1

, 당신은 단지 JSON.parse에 대한 사용자 정의 파서를 생성하고 자신에게 시간을 절약 할 수있다.