O {
k = 57.690636,
A = -2.010575000000017,
type = 'terrible'
}
以上内容目前k
和A
为keys
,但这些会定期更改。所以我希望有人可以帮我解决问题。
我目前只使用data.k
和data.A
来获取数组中的值,但是是否可以只选择前两个并将它们设置为变量而不知道键名?
答案 0 :(得分:1)
将JSON成员添加到数组中,然后使用它的索引..
var O = {
k:57.690636,
A:-2.010575000000017,
type:'terrible'
};
var index = [];
for (var x in O) {
index.push(O[x]);
};
答案 1 :(得分:1)
虽然不是最好的方法,但假设您要查找的属性的类型为数字,则以下方法可以正常工作。
var obj = {
k : 57.690636,
A : -2.010575000000017,
type : 'terrible'
};
for (attr in obj)
{
if (typeof obj[attr] === 'number')
{
console.log(obj[attr]);
}
}
答案 2 :(得分:0)
您可以使用Object.keys(yourObjectHere)
获取一系列密钥,但是对于更旧的浏览器兼容方法,请尝试:
var keys = [], k;
for( k in yourObjectHere) keys.push(k);
如果你愿意,你也可以在前两个循环中退出。
无论您选择这样做,现在都可以访问yourObjectHere[keys[0]]
和yourObjectHere[keys[1]]
答案 3 :(得分:0)
规范未定义JavaScript对象的属性顺序。这意味着根据实现,键可以按任何顺序返回,因此它们前两个键可以是对象中的任意两个键。
未指定枚举属性的机制和顺序(第一个算法中的步骤6.a,第二个算法中的步骤7.a)。
如果实现为for-in语句定义了特定的枚举顺序,则必须在此算法的步骤5中使用相同的枚举顺序。
最好的办法是稳定这些对象的来源,以便始终使用相同的键返回有价值的信息。
随机猜测是你使用一些减少密钥长度的缩小器。也许不是做
var returnedObject = {
lat : '123',
long : '456';
}
你可以这样做:
var returnedObject = {};
returnedObject['lat'] = '123';
returnedObject['long'] = '456';
这可以防止缩小更改您的密钥名称。如果您使用外部服务,您应该问自己这是否是实际公开(意味着您将使用的数据)数据与否,如果不是,那么公共替代方案是什么。