Javascript 使用jQuery获取JSON中键/值对中的键的名称?
假设我有这个JSON:Javascript 使用jQuery获取JSON中键/值对中的键的名称?,javascript,jquery,json,Javascript,Jquery,Json,假设我有这个JSON: [ { "ID": "1", "title": "Title 1", }, { "ID": "2", "title": "Title 2", } ] 如何返回每个记录重复出现的键名称集?在本例中,ID,title 我试过: $.getJSON('testing.json', function(data) { var items = []; $.each(data, f
[
{
"ID": "1",
"title": "Title 1",
},
{
"ID": "2",
"title": "Title 2",
}
]
如何返回每个记录重复出现的键名称集?在本例中,ID,title
我试过:
$.getJSON('testing.json', function(data) {
var items = [];
$.each(data, function(key, val) {
items.push(key +', ');
});
$('<p/>', {
html: items.join('')
}).appendTo('#content');
});
$.getJSON('testing.json',函数(数据){
var项目=[];
$。每个(数据、函数(键、值){
项。按(键+,);
});
$(“”{
html:items.join(“”)
}).appendTo(“#content”);
});
没有成功
这是一个JSON“数据库”,每个“记录”都有相同的键。我只需要一个脚本来告诉我键是什么,而不是测试它们是否出现在每个条目中。可能是这样的吧
items = [];
for (key in jsonobj) {
if (!itemExists(items, key)) {
items[items.length] = key
}
}
function itemExists(items, value) {
for (i = 0; i < items.length; i++) {
if (items[i] == value) {
return true
}
}
return false;
}
items=[];
for(输入jsonobj){
如果(!itemExists(items,key)){
items[items.length]=键
}
}
函数项存在(项、值){
对于(i=0;i
当然,这将返回任何一个对象中存在的项,而不是所有对象中存在的项。您的问题并不完全清楚这是否是您想要的解决方案。这可能会变得更高效/简洁,但下面的函数可以做到这一点
var testJson = [ {'oi' : 1, 'arf': 2, 'foo' : 0}, {'oi': 5, 'arf': 7}];
function commonKeys(j)
{
var fillUp = [];
for(var i in j[0])
fillUp.push(i);
for(var i = 1; i < j.length; i++)
{
var cur = j[i]; var curArr = [];
for (var i in cur) {curArr.push(i)};
fillUp = fillUp.filter(function(x) {return (curArr.indexOf(x) != -1);});
}
return fillUp;
}
alert(commonKeys(testJson)); //oi,arf (not foo)
var testJson=[{'oi':1,'arf':2,'foo':0},{'oi':5,'arf':7}];
功能通用键(j)
{
var-fillUp=[];
对于(j[0]中的变量i)
加油。推(i);
对于(变量i=1;i
这将为您提供一个对象数组中匹配的所有字符串属性的数组。这就是你要找的吗
$.getJSON('testing.json', function(data) {
var propertiesThatExistInAll = getPropertiesThatExistInAll(data);
});
var getPropertiesThatExistInAll = function(arr) {
var properties = $.map(data[0], function (prop, value) {
return prop;
});
var propertiesThatExistInAll = [];
$.each(properties, function (index, property) {
var keyExistsInAll = true;
// skip the first one since we know it has all the properties
for (var i = 1, len = data.length; i < len; i++) {
if (!data[i].hasOwnProperty(property)) {
keyExistsInAll = false;
break;
}
}
if (keyExistsInAll) {
propertiesThatExistInAll.push(property);
}
});
return propertiesThatExistInAll;
};
$.getJSON('testing.json',函数(数据){
var propertiesThatExistInAll=getPropertiesThatExistInAll(数据);
});
var getPropertiesThatExistInAll=函数(arr){
变量属性=$.map(数据[0],函数(属性,值){
返回道具;
});
var propertiesThatExistInAll=[];
$.each(属性、函数(索引、属性){
var keyExistsInAll=true;
//跳过第一个,因为我们知道它具有所有属性
对于(变量i=1,len=data.length;i
因此您得到了一个json对象数组。你只想要共享密钥,对吗?因此,如果第一个有另一对“key”:“val”,但第二个没有,则不希望返回该对。对的