2017-10-05 63 views
2

我們的10年前的軟件曾經是用PHP編寫的,並結合了HTML和SQL片段。我被迫盡力而爲。需要通過從PHP轉換爲jquery的數組中獲取值的索引

根本沒有使用JavaScript的經驗,我不得不使用jQuery的inArray來按值獲取索引。

雖然一切似乎都是正確的,但inArray一直返回-1,雖然我應該得到正確的索引。那麼我做錯了什麼?

$html1 .= "<script src='/js/jquery-3.2.1.min.js'> </script> 
<script> var juseridarray = ".json_encode($useridarray)."; 

$(document).ready(function() 
{ 
    $('#chiefname').change(UpdateInfo); 
    $('#chiefid').change(UpdateInfo);                        
    $('#chiefs').change(UpdateInfo); 
}); 
function UpdateInfo() 
{ 
    var chiefname = $('#chiefname').val();                      
    var chiefid = $.inArray(chiefname, juseridarray); 
    var chief = chiefid; 
    $('#chief').val(chief); 
    console.log(juseridarray); 
    console.log(chiefname); 
} 

</script>"; 

對不起,我忘了提及日誌輸出。因此,這是我從螢火複製juseridarray日誌輸出的一個片段:

對象[430]
1: 「管理員」
3: 「鮑勃」
8: 「韋格納,美克」
10: 「索倫賈「
[426更多...]

該數組似乎有一個正確的索引和正確的值。所以,當我搜索「鮑勃」,inArray在使用

console.log(juseridarray[3]); 

數組內容是返回-1,雖然「鮑勃」預期回報返回3. 在另一方面,我得到「鮑勃」靜態的。它在運行時不會改變。如果它會,用戶名將始終保持其ID(存儲爲索引)

+0

負一指沒有找到,這意味着你可能沒有你認爲你該數組 – clearshot66

+0

我們需要更多的信息來幫助做。請編輯您的問題以包含$ useridarray的輸出。它是否改變或者是靜態的? – waterloomatt

回答

1

首先,它不是您正在使用的數組,它是一個對象。

你不能像你打算那樣使用一個對象的inArray。 但是,下面的代碼應該返回給定用戶名的用戶的id(如果存在)。根據API

function findUserIdByUsername(user, userArray){ 
    var user_id = false; 
    $.each(userArray, function(id, username){ 
      if(user == username) user_id = id 
    }); 
    return user_id; 
} 

var chiedif = findUserIdByUsername('bob', juseridarray); 
+1

是的,它給出了預期的結果。非常感謝! –

相關問題