问题描述
我想问一下我有没有这样的对象
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])
}
}