Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript查找数组项的父项_Javascript_Arrays_Parent - Fatal编程技术网

javascript查找数组项的父项

javascript查找数组项的父项,javascript,arrays,parent,Javascript,Arrays,Parent,我有这样一个数组项: var array = USA.NY[2]; // gives "Albany" {"USA" : { "NY" : ["New York City", "Long Island", "Albany"] }} 我想从数组中找到状态。我该怎么做?谢谢 function findParent(array) { // do something // return NY } 在Javascript中,数组元素没有对包含它们的数组的引用 要实现这一点,您必须有对“根

我有这样一个数组项:

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;
                }
            }
        }
    }
}
函数findParent(项){
var成员,i,数组;
代表(美国会员){
if(USA.hasOwnProperty(member)&&typeof USA[member]===“object”&&USA[member]数组实例){
数组=美国[成员];
对于(i=0;i
请注意,我已将
数组
参数重命名为
,因为您正在传递一个值(和数组项),并且希望返回数组。

如果你想知道数组的名称,你应该返回
member

这里有一个通用函数,可以用来查找任何类型多维对象的父键。我习惯性地使用下划线.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;
})

你的问题的哪一部分是输入?了解您需要输出为NY…@vishwant如果输入是数组变量,您可以提供更多关于如何使用它以及参数是什么的详细信息。