Я работаю с последним проектом API аннотаций в твиттере.Пример бит данных выглядит как
status {
annotations : [
{myAnnotationType:{myKey:myValue}},
{someoneElsesAnnotationType:{theirKey:theirValue}},
]
}
Теперь я хочу проверить состояние, чтобы увидеть, если есть аннотация с myAnnotationType в нем.Если бы аннотации были хешем вместо массива, я мог бы просто написать var ann = status.annotations.myAnnotationType.Но это не так, я написал это вместо:
function getKeys(obj){
var keys = [];
for (key in obj) {
if (obj.hasOwnProperty(key)) { keys[keys.length] = key; }
}
return keys;
}
function getAnnotation(status, type){
for(var i=0;i<status.annotations.length;i++){
var keys = getKeys(status.annotations[i]);
for(var j=0;j<keys.length;j++){
if(keys[j] == type){
return status.annotations[i];
}
}
}
}
var ann = getAnnotation(status, "myAnnotationType");
Должен быть лучший способ!
PS Я не могу использовать jquery или что-то еще, поскольку это js для использования в виджете caja, а контейнер не поддерживает внешние библиотеки