[英]$.each doesn't respect the order of an array
我正在嘗試在PHP中訂購多維數組,然后將其傳遞給我的javascript文件以顯示它。 我使用$.map
和$.each
函數顯示數據。 問題是JS根據ID對數組重新排序。 例如,如果我有這樣的數組。
$array = array(1 => array('name' => 'A','last' => 'B'),
5 => array('name' => 'C','last' => 'D'),
2 => array('name' => 'K','last' => 'Z'));
JavaScript將以這種方式對其進行排序
array = {1:{name:'A',last:'B'},2:{name:'C',last:'D'},5:{name:'K',last:'Z'}}
我正在使用uasort根據名稱對數組進行排序:
public function specialNameComparison($firstElmnt,$secondElmnt){
if ($firstElmnt['name'] == $secondElmnt['name']) {
return 0;
}
return ($firstElmnt['name'] < $secondElmnt['name']) ? -1 : 1;
}
uasort($users,array($this,'specialNameComparison'));
echo json_encode($users);
die();
就像我說的那樣,在javascript中,我正在使用$.each
(我已經嘗試過$.map
)來簡單地顯示數據
$.each(json, function(key,value) {
console.log(value.name);
});
為什么Javascript會這樣做!
正如以上評論者所指出的那樣,您是在JS中創建對象而不是數組,因此沒有關聯數組,表示索引會將您置於“對象數組”的上下文中。 如果您需要這些鍵,我會建議類似的東西:
$array = [
[ 'key' => 1, 'name' => 'A','last' => 'B' ],
[ 'key' => 5, 'name' => 'C','last' => 'D' ],
[ 'key' => 2, 'name' => 'K','last' => 'Z' ],
];
當json編碼時,將輸出:
[
{ "key": 1, "name": "A","last": "B" },
{ "key": 5, "name": "C","last": "D" },
{ "key": 2, "name": "K","last": "Z" },
]
那么您的js可以是:
const arr = [ { key: 1, name: 'A',last: 'B' }, { key: 5, name: 'C',last: 'D' }, { key: 2, name: 'K',last: 'Z' }, ]; arr.forEach(({key, name, last }) => console.log(`key: ${key} - ${name} ${last}`))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.