我有一个像这样的数组项:
var array = USA.NY[2];
// gives "Albany"
{"USA" : {
"NY" : ["New York City", "Long Island", "Albany"]
}}
今日免费次数已满, 请开通会员/明日再来
function findParent(array) {
// do something
// return NY
}
我有一个像这样的数组项:
var array = USA.NY[2];
// gives "Albany"
{"USA" : {
"NY" : ["New York City", "Long Island", "Albany"]
}}
function findParent(array) {
// do something
// return NY
}
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
。USA, Germany, AU, UK
,我们应该在对象内部循环吗? - iamsujit这里是一个通用功能,可用于查找任何多维对象的父键。我习惯使用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;
})