微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据数组的值返回对象的键

如何解决根据数组的值返回对象的键

我想问一下我有没有这样的对象

const dataArray = {
    key1: ["a","b"],key2: ["c","d"],key3: ["e","f"],};

我试过了

    const obj = Object.keys(dataArray).map((data,index) => {
        return dataArray[data];
        if (dataArray[data].indexOf("water") > -1) {
            return Object.keys(dataArray);
        }
    });

我想返回一个具有字符串 "c" 值的键 (key1,key2,key3)。

我该怎么做?请帮忙

解决方法

你应该知道.map.find.filter的区别

const dataArray = {
    key1: ["a","b"],key2: ["c","d"],key3: ["e","f"],};
const result1 = Object.keys(dataArray).map((data,index) => {
        return dataArray[data];
        // The line below do not affect !!!
        if (dataArray[data].indexOf("water") > -1) {
            return Object.keys(dataArray);
        }
    });
console.log(result1.join(',')); // All records from `dataArray`

/*******Find one item => using find*/
console.log(Object.keys(dataArray).find(k => dataArray[k].includes("c")));

/*******Find multiple items => using filter*/
console.log(Object.keys(dataArray).filter(k => dataArray[k].includes("c") || dataArray[k].includes("e")));

map() 方法创建一个新数组,其中填充了以下结果 对调用数组中的每个元素调用提供的函数。

find() 方法返回第一个元素的值 提供的数组满足提供的测试功能。如果不 值满足测试函数,返回 undefined。

filter() 方法创建一个新数组,其中包含传递的所有元素 由提供的函数实现的测试

,

您可以获取对象的条目(键/值对)并迭代以获取您想要的键(如果值包含 'c')

const dataArray = {
    key1: ["a",};

const entries = Object.entries(dataArray);

for(let entry of entries){
    if(entry[1].includes('c')){
        console.log(entry[0])
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。