我有像这样的Json数据
{
"info":[
{
"Name":"Noob Here",
"Major":"Language",
"Sex":"Male",
"English":"15",
"Japanese":"5",
"Calculus":"0",
"Geometry":"20"
},
{
"Name":"Noob Here",
"Major":"Calculus",
"Sex":"Female",
"English":"0.5",
"Japanese":"40",
"Calculus":"20",
"Geometry":"05"
}
]
}
我只需要获取值为数值数据的键值对。
预期输出
{
"English":"15",
"Japanese":"5",
"Calculus":"0",
"Geometry":"20"
},
{
"English":"0.5",
"Japanese":"40",
"Calculus":"20",
"Geometry":"05"
}
是否有任何插件或者我应该使用正则表达式为它编写长jquery代码?
答案 0 :(得分:3)
使用jquery isNumeric
查找是否为数字..然后播放对象和数组..你需要两个循环来获取对象......
在这里你去..
var finalObj={}; //this is final output object
var info = []; //array to push to finalObj
$.each(data.info,function(i,v){
var object={};
$.each(v,function(i1,val1){
if($.isNumeric(val1)){
object[i1]=val1
}
});
info.push(object);
});
finalObj['info']=info;
console.log(finalObj);
答案 1 :(得分:2)
您可以使用parseInt
解析值,如果它是整数而不是选择它。
test等于要发布的json对象。
var obj = test.info[0];
for (var key in obj) {
if(!isNaN(parseInt(obj[key]))){
alert(JSON.stringify(key));
}
}
答案 2 :(得分:2)
您可以编写辅助函数。只需传入你的Json对象并遍历每个字段。正则表达是直截了当的。
var regex = new RegExp("\d*\.?\d");
var result = regex.test("yourvalue");
如果结果为真,则为数字。编译结果并返回一个Json对象。
答案 3 :(得分:2)
试试这个:
var data={
"info":[
{
"Name":"Noob Here",
"Major":"Language",
"Sex":"Male",
"English":"15",
"Japanese":"5",
"Calculus":"0",
"Geometry":"20"
},
{
"Name":"Noob Here",
"Major":"Calculus",
"Sex":"Female",
"English":"0.5",
"Japanese":"40",
"Calculus":"20",
"Geometry":"05"
}
]
};
var newarr=[];
$(data.info).each(function(index,value){
arr=new Object();
$(Object.keys(value)).each(function(ind,val){
if($.isNumeric(value[val]))
{
arr[val]=value[val];
}
});
newarr.push(arr);
});
console.log(newarr);
小提琴 http://jsfiddle.net/RyVds/2/
要查看Object.keys()
阅读http://msdn.microsoft.com/en-us/library/ie/ff688127%28v=vs.94%29.aspx和https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/keys
答案 4 :(得分:1)
您可以遍历每个对象上的键并尝试parseInt该值。如果它是一个字符串,它将返回NaN。
for (var i = 0; i < obj.info.length; i++) {
var tmp = {};
keys = Object.keys(obj.info[i]);
console.log(keys);
for (var j = 0; j < keys.length; j++) {
if (parseInt(obj.info[i][keys[j]])) {
tmp[keys[j]] = obj.info[i][keys[j]];
}
}
完整代码在jsfiddle: