如何解决根据数组的值返回对象的键
我想问一下我有没有这样的对象
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 举报,一经查实,本站将立刻删除。