如何从json中获得数字键值对
How to get only numerical key value pair from json
我有一个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代码为它使用正则表达式?
使用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);
这里的小提琴
您可以编写一个辅助函数。只需传入Json对象并循环遍历每个字段。正则表达式是直接的。
var regex = new RegExp("'d*'.?'d");
var result = regex.test("yourvalue");
如果result为真,则它是一个数字。编译结果并返回一个Json对象。
试试这个:
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
您可以使用parseInt
解析该值,如果它是整数,则选择它。
test等于要发布的json对象。
var obj = test.info[0];
for (var key in obj) {
if(!isNaN(parseInt(obj[key]))){
alert(JSON.stringify(key));
}
}
http://jsfiddle.net/btevfik/gQfAN/您可以遍历每个对象上的键并尝试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上:
http://jsfiddle.net/wXBKd/1/相关文章:
- 正在数组中存储键值对
- 如何将新的键/值对元素添加到现有数组
- 在键值对中对求和值进行下划线
- 返回由键/值对定义的数组
- 在url参数javascript中存储键值对列表
- 将数组转换为键值对
- jQueryAJAX-将额外的键/值对推送到序列化的$_POST数组中
- 使用jQuery从ajax调用访问键值对
- 将动态键值对传递给函数
- d3使用键值对对对多个值的数据进行分组
- JS在封装对象中查找键值对
- 从html标记格式的字符串中提取键值对
- JavaScript 在函数中声明键值对
- 在JavaScript中为表单元素生成键值对
- 如何给$('inputs')每个函数,以将数据存储为 asp.net 中的键值对
- 从 JSON 获取键值对而不使用 .(DOT) 在 Java 脚本或 jquery 中
- 在键值对的唯一组合上合并对象
- 动态插入并从数组中检索键值对 - Javascript
- 如何从json中获得数字键值对
- 当key为数字时,用于键/值对的For循环