2015-01-09 5 views
0

У меня есть массив объектов JSON с сервера:Underscorejs - изменение значений в формате JSON массива

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

Использование underscorejs, является возможность проходным этих объектов и изменять каждый "null" значение в каждой клавиши с пустой строкой ""?

+1

Да, это вполне возможно. Это также возможно в простом javascript. Вы что-нибудь пробовали? С чем вы столкнулись? – Xotic750

+0

Я пробовал с подчеркиванием, но безуспешно. Мне нужно изменить каждое нулевое значение в этом массиве с пустой строкой. – Tomislav

+0

Каков был ваш код и как он не удался? – Xotic750

ответ

2

Итерируйте по коллекции и ее объектам с помощью метода _.each() * и замените значения равными «null» на пустую строку. Итак, логика такая же, как и итерация через двумерный массив с использованием вложенного цикла.

* Я не предлагаю использовать _.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>

1

Вместо пробегаем по всем данным, после того, как обрабатывается в вашей JSON строки, вы можете просто создать пользовательский анализатор для JSON.parse и сэкономить время.

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

Смежные вопросы