![](/img/trans.png)
[英]What is the proper way to match key and value from an array of objects and return a new object with only that key
[英]What is the proper way to match key and value to some variable using Javascript array?
我試圖在javascript中創建一個函數,以獲取與外部變量匹配的值。
我創建了一個鍵/值數組。 然后,我制作了一個函數,該函數將檢查值是否與變量匹配。 然后,我將返回此值的密鑰。
function findNumberFromMonth($data)
{
var obj = {
01: "Jan",
02: "Feb",
03: "Mar",
04: "Apr",
05: "May",
06: "Jun",
07: "Jul",
08: "Aug",
09: "Sep",
10: "Oct",
11: "Nov",
12: "Dec"
}
for(var element in obj)
{
if($data == element.value )
{
$number = element.key
}
return $number;
}
}
如果我將$ data初始化為“ Jan”,我期望輸出為“ 01”。
但是我只有一個未定義的對象。 我該如何處理?
謝謝您的回復。
如果您要做的是將月份名稱映射到月份編號,則對象向后:
function findNumberFromMonth($data)
{
var months = {
"Jan": "01",
"Feb": "02",
"Mar": "03",
// ...
};
return months[$data];
}
你可以這樣做。
var obj = { 01: "Jan", 02: "Feb", 03: "Mar", 04: "Apr", 05: "May", 06: "Jun", 07: "Jul", 08: "Aug", 09: "Sep", 10: "Oct", 11: "Nov", 12: "Dec" } var key = Object.keys(obj)[Object.values(obj).indexOf("Jun")] console.log(key)
這可以通過find
和Object.entries
:
function findNumberFromMonth(data) { const months = { 01: "Jan", 02: "Feb", 03: "Mar", 04: "Apr", 05: "May", 06: "Jun", 07: "Jul", 08: "Aug", 09: "Sep", 10: "Oct", 11: "Nov", 12: "Dec" }; return Object.entries(months).find(([key, val]) => data === val)[0]; } console.log(findNumberFromMonth('Oct'));
當使用for(let x in obj)
x
for(let x in obj)
x
是對象的key
。 為...英寸
function findNumberFromMonth($data) { var obj = { 01: "Jan", 02: "Feb", 03: "Mar", 04: "Apr", 05: "May", 06: "Jun", 07: "Jul", 08: "Aug", 09: "Sep", 10: "Oct", 11: "Nov", 12: "Dec" } for(var key in obj) { if($data == obj[key]) return key; } } console.log(findNumberFromMonth('Jan'));
如果同時需要鍵和值,請使用object.entries並對其進行迭代。
const data = "Feb"; const obj = { "01": "Jan", "02": "Feb", "03": "Mar", "04": "Apr", "05": "May", "06": "Jun", "07": "Jul", "08": "Aug", } for (let [key, value] of Object.entries(obj)) { if(data === value ) { console.log(key); } }
您在if語句中分配$ number變量。 但是從if語句中返回它。 您必須將返回行移至if語句,如果未返回任何內容,則可以返回false值。
function findNumberFromMonth($data) {
var obj = {
01: "Jan",
02: "Feb",
03: "Mar",
04: "Apr",
05: "May",
06: "Jun",
07: "Jul",
08: "Aug",
09: "Sep",
10: "Oct",
11: "Nov",
12: "Dec"
}
for (var key in obj) {
if ($data === obj[key])
return key;
}
return false;
}
console.log(findNumberFromMonth('Mar'));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.