如何根据位置或值去查找对象索引?

1635297745(1).png
image.png

如何根据位置1去查找到 30:"地产暖场"?
如何根据“地产暖场”去查找到地产暖场的KEY值30?

阅读 2.2k
3 个回答

第二个如果 val 有多个相同的,只会找到第一个。

let str = '地产暖场'; 
let [key]=Object.entries({30:'地产暖场',31:'11'}).find(([key,val])=>val===str);
console.log(key);
//30

1、可以使用Object.entries(obj)0获取,但不是很准,因为对象是无序的,哪有位置1这一说法
2、遍历 getKeyByValue(“地产暖场”)

function getKeyByValue(value){
    for(let k in obj){
        if(obj[k] === value)return k
    }
}

需要关注插入顺序的话 应当使用Map对象。Map 会按照插入顺序保持元素的顺序,而Object做不到。

如果是普通对象可以参考其他答案的。。

如果是map查询对于值所属的key可以使用以下代码,会根据插入顺序获得第一个匹配的key

const map = new Map([["a1","a"],["a","a1"],["a2","a1"]])
// 获取第一个元素 空就自己判断吧。。。
map.get(map.keys().next().value)
// 获取匹配的第一个元素。示例代码里面是a1 可以替换为变量
let res = null
map.some((value,key)=>{if(value === "a1")return res = key})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题