我有一个这样的数组项:
var array = USA.NY[2];
// gives "Albany"
{"USA" : {
"NY" : ["New York City", "Long Island", "Albany"]
}}
我想从拥有数组中找到状态。我该怎么做呢?感谢。
function findParent(array) {
// do something
// return NY
}
答案 0 :(得分:5)
在Javascript中,数组元素没有引用包含它们的数组。
要实现这一点,您必须引用“根”数组,这取决于您的数据模型。
假设USA是可访问的,并且只包含数组,那么你可以这样做:
function findParent(item) {
var member, i, array;
for (member in USA) {
if (USA.hasOwnProperty(member) && typeof USA[member] === 'object' && USA[member] instanceof Array) {
array = USA[member];
for(i = 0; i < array.length; i += 1) {
if (array[i] === item) {
return array;
}
}
}
}
}
请注意,我已将array
参数重命名为item
,因为您传递的是值(和数组项),并且您希望返回该数组。
如果您想知道数组的名称,则应该返回member
。
答案 1 :(得分:1)
这是一个通用函数,可用于查找任何类型的多维对象的父键。我习惯使用underscore.js以及抽象数组与关联数组循环的简洁性。
(function (root, struct) {
var parent = null;
var check = function (root, struct) {
_.each(root, function (value, key) {
if (value == struct) {
parent = key;
} else if (root == struct) {
parent = '_root';
} else if (typeof value === 'object') {
check(value, struct);
}
});
}
check(root, struct);
return parent;
})