所以,如果我只有一個鍵可以匹配,那么類似:
var str = "foo";
let [key,val] = Object.entries(obj).find(([key,val]) => val== str);
return key;
會很好地作業。但是如果值匹配,有沒有辦法添加多個鍵?
舉一個可能匹配上述字串的物件的例子:
obj = {
quay: "foo",
key1: "blargh",
yaya: "foo",
idnet: "blat",
blah: "foo",
hahas: "blargh"
}
我想要做的是根據上面的匹配 var回傳所有“foo”鍵( quay、、yaya和) 。blahstr
我敢肯定,答案很簡單,我忽略了。
uj5u.com熱心網友回復:
使用filter代替find和map洗掉值。
const obj = { quay: "foo", key1: "blargh", yaya: "foo", idnet: "blat", blah: "foo", hahas: "blargh" }
const str = 'foo';
const keys = Object.entries(obj).filter(([, val]) => val === str).map(([key]) => key);
console.log(keys);
uj5u.com熱心網友回復:
用于Object.keys()獲取鍵陣列,并使用Array.filter(). 在過濾器的謂詞函式中,使用鍵從物件中獲取相關值 -obj[key]并將其與str.
const str = 'foo'
const obj = {"quay":"foo","key1":"blargh","yaya":"foo","idnet":"blat","blah":"foo","hahas":"blargh"}
const keys = Object.keys(obj).filter(key => obj[key] === str)
console.log(keys)
uj5u.com熱心網友回復:
您可以像正在做的那樣獲取所有條目,但不是使用 find,而是使用str您想要查找的值過濾所有條目并將其映射到串列。像這樣:
const str = "foo";
const obj = {
quay: "foo",
key1: "blargh",
yaya: "foo",
idnet: "blat",
blah: "foo",
hahas: "blargh"
}
const repeated = Object.entries(obj)
.filter(([key, val]) => val === str)
.map(([key, val]) => key);
console.log(repeated);
uj5u.com熱心網友回復:
其他方式:
const obj = {
quay: "foo",
key1: "blargh",
yaya: "foo",
idnet: "blat",
blah: "foo",
hahas: "blargh"
}
let items = Object.fromEntries(Object.entries(obj).filter(([key, val]) => val === 'foo'));
console.log(Object.keys(items))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/470748.html
標籤:javascript 数组 细绳 目的 钥匙
上一篇:如何強制資料框中除了數字之外具有任何str或字符的行為空白?
下一篇:從Class實體列印資料
