簡體   English   中英

如何通過JavaScript / JQuery在多維數組中查找元素的索引

[英]How to find the index of an element in a multidimensional array by JavaScript/JQuery

通過json_encode從PHP數組轉換JSON數組。 我想通過JavaScript / JQuery從該JSON數組中找到特定元素的索引。

首先,用戶將選擇一個選項,其中的值將是人員的ID。

<select class="form-control" id="pname" name="pname" required>
    <option value="">--Please select--</option>
    <option value="312">John Doe</option>
    <option value="313">Mark Angel</option>
    <option value="314">Chloe Karl</option>
</select>

然后通過JavaScript / JQuery,我需要從下面給出的JSON數組中獲取所選選項的值的索引。

{
"p_id":{"1":312,"2":313,"3":314},
"p_name":{"1":"John Doe","2":"Mark Angel","3":"Chloe Karl"},
"p_dob":{"1":"1983","2":"1993","3":"1987"},
"p_sex":{"1":"Male","2":"Male","3":"Male"}
}

您有一個JavaScript對象常量而不是數組,可以使用for in循環來迭代並找到所需的內容。

 var obj = { p_id: { "1": 312, "2": 313, "3": 314 }, p_name: { "1": "John Doe", "2": "Mark Angel", "3": "Chloe Karl" }, p_dob: { "1": "1983", "2": "1993", "3": "1987" }, p_sex: { "1": "Male", "2": "Male", "3": "Male" } }; var selected = 313; for (p in obj.p_id) { if (obj.p_id[p] == selected) { console.log(p); } } 

如果您有來自php的原始響應,則將有一個JSON。 您可以使用JSON.parse()將其轉換為對象

如果我沒有誤解/誤解您的問題 ,那么您需要此代碼段。

步驟:

  1. 首先在您的select元素上添加一個onchange事件。

  2. 使用JSON.parse()解析json字符串

  3. 使用Array.prototype.filter()獲取所選用戶的密鑰/索引。

 function getSelect() { var obj = JSON.parse('{"p_id":{"1":312,"2":313,"3":314},"p_name":{"1":"John Doe","2":"Mark Angel","3":"Chloe Karl"},"p_dob":{"1":"1983","2":"1993","3":"1987"},"p_sex":{"1":"Male","2":"Male","3":"Male"}}'); var ids = obj.p_id; var e = document.getElementById("pname"); var user = e.options[e.selectedIndex].value; //console.log(ids, user, Object.keys(ids)) if(user && user!=""){ var k = Object.keys(ids).filter((key) => { return ids[key] == user; })[0]; console.log(k) }else { console.log('Select an option first'); } } 
 <select class="form-control" onchange="getSelect()" id="pname" name="pname" required> <option value="">--Please select--</option> <option value="312">John Doe</option> <option value="313">Mark Angel</option> <option value="314">Chloe Karl</option> </select> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM