为了账号安全,请及时绑定邮箱和手机立即绑定

如果在对象中找到值,则返回键

如果在对象中找到值,则返回键

扬帆大鱼 2021-12-12 10:37:02
有一个对象,如:var animals = { "dog": ["black", "red", "green"],                 "cat": ["pink", "red", "white"],                 "bird": ["green", "grey", "yellow"]};我想取回具有某种颜色的动物的名称,例如"red"我想返回一个包含["dog", "cat"];的数组。尝试这样做,但我只返回 Array(0) 或 Array(1)function findColor(animals, color) {  var result = [];  if (Object.values(animals).indexOf(color) > -1) {    result.push(color);  }  return result;}console.log(findColor(animals, "red"));
查看完整描述

2 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

您可以简单地使用Object.keys和filter


var animals = {

  "dog": ["black", "red", "green"],

  "cat": ["pink", "red", "white"],

  "bird": ["green", "grey", "yellow"]

};


function findColor(animals, color) {

  return Object.keys(animals).filter(key=>animals[key].includes(color))

}


console.log(findColor(animals, 'red'));

为什么我的代码不起作用?

indexOf 使用严格比较,Object.values(animals) 返回一个二维数组,并且您试图将其与字符串值匹配,您需要执行的操作是遍历键并在二维数组的子数组上使用 indexOf

var animals = {"dog": ["black", "red", "green"],"cat": ["pink", "red", "white"],"bird": ["green", "grey", "yellow"]};


function findColor(animals, color) {

  var result = [];

  Object.keys(animals).forEach(v => {

    if (animals[v].indexOf(color) > -1) {

      result.push(v)

    }

  })

  return result;

}


console.log(findColor(animals, "red"));


查看完整回答
反对 回复 2021-12-12
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

您可以使用Object.keys然后迭代数组,然后根据条件进行检查:


var animals = { "dog": ["black", "red", "green"],

                 "cat": ["pink", "red", "white"],

                 "bird": ["green", "grey", "yellow"]};


function findColor(animals, color) {

  let result = []

   Object.keys(animals).forEach(key=>{

     if(animals[key].indexOf(color)>-1){

        result.push(key)

      }

   });

  return result;


}


console.log(findColor(animals, "red"));


查看完整回答
反对 回复 2021-12-12
  • 2 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号