javascript - 根据数组的值返回对象的键
问题描述
我想问我有没有这样的对象
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"
。
我怎么做?请帮忙
解决方案
你应该知道.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()
方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
推荐阅读
- kendo-ui - Kendo Grid 验证消息位置问题
- android - 从日期选择器获取日期名称?
- python - 找不到模型 odoo v8
- java - PagedList 在使用 Room 的 Android 应用程序中不断增长但从未缩小
- java - PDFBox与java并排合并2个pdf文件
- css - Bootstrap 在 Angular 6 中无法正常工作
- c++ - C++ - 是否可以让子类按值包含包含类?
- python - 如何使用eonet api使用python获取自然灾害图像
- c# - 尽管引用了 dll,但无法使用命名空间
- java - 双重没有从一个方法传递到另一个方法