从搜索值中获取数组名称

时间:2019-07-14 21:05:57

标签: javascript json

我基本上是想让一些代码在JSON文件中查找特定的JSON字符串,并报告其父名称是什么。我正在为此使用NodeJS。

例如:

{
    "Array1" : [
        "Thing1",
        "Thing2",
        "Thing3",
     ],
     "Array2" : [
     "Thing4",
     "Thing5",
     "Thing6"
     ]
}

我想要此代码执行的操作是获取一个我赋予它的值,例如“ Thing1”,并使用其所在的数组的名称进行报告,因此,我得到了它来搜索“ Thing1”,它给出了我回到“ Array1”。我得到它来搜索“ Thing4”,它返回“ Array2”。它提供的输出需要放在一个变量中,以便以后在我的代码中使用。

感谢您的帮助! 干杯, 内森。

3 个答案:

答案 0 :(得分:2)

似乎我在这里参加聚会有点晚了,但是我认为在ES6中,您还可以通过一种更加“实用”的方式来做到这一点:

const search = (obj, value) => Object.keys(obj).find(k => obj[k].includes(value));

然后您可以执行以下操作:

search(obj, 'Thing1')

答案 1 :(得分:1)

使用此:

function search(arr,searchStr)
{
for( a in arr)
 if(arr[a].filter(t=>t==searchStr).length>0)
    return a;
 return null;
}

还有

search(yourArray,'Thing1');

答案 2 :(得分:0)

const obj = {
    "Array1" : [
        "Thing1",
        "Thing2",
        "Thing3",
     ],
     "Array2" : [
     "Thing4",
     "Thing5",
     "Thing6"
     ]
};

const find = (obj, search) => {
    const result = Object.keys(obj).map(key => {
        if (obj[key].filter(thing => thing === search).length > 0) 
            return key;
        return null;
    }).filter(result => result != null);
    if (result.length > 0) {
        return result[0];
    }
    return null;
}

const array = find(obj, "Thing1");
console.log(array);