2016-11-25 2 views
0

У меня есть выход, как показано ниже:Как удалить пространство ключей объекта JSON

output = { 
    "New Classroom": [{ 
    "Name": "Apple", 
    "Age": "6", 
    "Percentage": "24.00%" 
    }, { 
    "Name": "Orange", 
    "Age": "5", 
    "Percentage": "9.88%" 
    }, { 
    "Name": "Green", 
    "Age": "2", 
    "Percentage": "27.27%" 
    }, { 
    "Name": "Grey", 
    "Age": "6", 
    "Percentage": "12.63%" 
    }] 
} 

Как заменить New Classroom с NewClassroom и Новый класс не всегда «NewClassroom» .Это может отличаться текст

ob = JSON.parse(output); 

alert(Object.keys(ob)) 

, когда я делаю это, я получаю Newclassroom как ключевой

ответ

2

вы можете перебрать имена свойств верхнего уровня в объекте вы Rece ive, обнаруживать любые пробелы и удалять пробелы. (Вам не нужно, они совершенно правильные имена свойств, но вы можете , если вы хотите.)

var output = { "New Classroom": [{"Name": "Apple","Age": "6","Percentage": "24.00%"},{"Name": "Orange","Age": "5","Percentage": "9.88%"},{"Name": "Green","Age": "2","Percentage": "27.27%"},{"Name": "Grey","Age": "6","Percentage": "12.63%"}]}; 
 
var name, newName; 
 
// Loop through the property names 
 
for (var name in output) { 
 
    // Get the name without spaces 
 
    newName = name.replace(/ /g, ""); 
 
    // If that's different... 
 
    if (newName != name) { 
 
    // Create the new property 
 
    output[newName] = output[name]; 
 
    // Delete the old one 
 
    delete output[name]; 
 
    } 
 
} 
 
console.log(output);

Обратите внимание, что с помощью delete на объекте может снизить производительность последующих поисков свойств. 99,99% времени, это не имеет значения. Если это имеет значение в вашем случае, создать новый объект, а не изменить его на месте:

var output = { "New Classroom": [{"Name": "Apple","Age": "6","Percentage": "24.00%"},{"Name": "Orange","Age": "5","Percentage": "9.88%"},{"Name": "Green","Age": "2","Percentage": "27.27%"},{"Name": "Grey","Age": "6","Percentage": "12.63%"}]}; 
 
var name, newName; 
 
var newOutput = {}; 
 
// Loop through the property names 
 
for (var name in output) { 
 
    // Get the name without spaces 
 
    newName = name.replace(/ /g, ""); 
 
    
 
    // Copy the property over 
 
    newOutput[newName] = output[name]; 
 
} 
 
console.log(newOutput);

+0

так что это не будет работать, если 'Percentage' имеет некоторые пробелы? – Mahi

+0

@Mahi: У меня не было такого впечатления. Нет, это не так, потому что мы обрабатываем только объект верхнего уровня. Конечно же, тот же принцип может быть применен к объектам в подчиненном массиве ... –

1
  • Используйте Object.keys, чтобы получить все ключи от объекта
  • Использование String#replace к заменить символ от String

var obj = { 
 
    "New Classroom": [{ 
 
    "Name": "Apple", 
 
    "Age": "6", 
 
    "Percentage": "24.00%" 
 
    }, { 
 
    "Name": "Orange", 
 
    "Age": "5", 
 
    "Percentage": "9.88%" 
 
    }, { 
 
    "Name": "Green", 
 
    "Age": "2", 
 
    "Percentage": "27.27%" 
 
    }, { 
 
    "Name": "Grey", 
 
    "Age": "6", 
 
    "Percentage": "12.63%" 
 
    }] 
 
}; 
 

 
Object.keys(obj).forEach(function(key) { 
 
    var replaced = key.replace(' ', ''); 
 
    if (key !== replaced) { 
 
    obj[replaced] = obj[key]; 
 
    delete obj[key]; 
 
    } 
 
}); 
 
console.log(obj);

Примечание: только однократная пространства считается, RegEx может быть использован, если space явление более чем один раз!

+1

Используйте regex для замены, иначе он заменяет только первое пространство. – MrCode

1

Петля в каждой клавише json, затем разбор.

попытка регулярное_выражение

var word = "New Classroom" 
 
word = word.replace(/\s/g, ''); 
 
console.log(word)

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