首页 > 解决方案 > 根据数组的值返回对象的键

问题描述

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

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);
        }
    });

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

我怎么做?请帮忙

标签: javascriptarraysobjectdata-structures

解决方案


你应该知道.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()方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。


推荐阅读