簡體   English   中英

從關聯數組打印JavaScript對象

[英]Printing JavaScript Objects from Associatve Array

如果我只想console.log一個1(ANY)javaScript對象,該怎么辦。 當前,它顯示所有1000。請查看Php和JS文件:

Server.php

if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$data = array("coordinates" => array());

$sql = "SELECT Lng, Lat, URL FROM results LIMIT 1000";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $data["coordinates"][] = $row;
    }
}
echo json_encode($data);

Index.js

{
$.ajax({
  dataType: "json",
  url: 'server.php',
  //data: [],
  data: {param: ""},
  success: function(data)
  {
    //JSON.parse(data);  
    console.log(data);
  addMarkers(data,map);
  }
});

}

之所以顯示全部,是因為您正在全部記錄。 您將從數據庫調用中返回1000對象,這就是為什么它記錄了所有對象的原因。

您可以使用類似以下內容的鍵找到單個對象:

data.filter(x => x.myPropValue == "myString");

並記錄下來。

如果您希望JavaScript AJAX調用不記錄所有1000個項目,則可能需要更改php代碼( $sql = "SELECT Lng, Lat, URL FROM results LIMIT 1000"; ),以便每次調用僅發送一個項目(例如,替換1000(帶有1),然后調整服務器邏輯以在下一個AJAX調用中獲得相應的下一項。

這也將使您的服務器和客戶端更快,因為它減少了總數據量,但仍允許1000個或更多的項目。

您也可以嘗試添加一個參數,以便可以告訴php代碼JS代碼需要獲得多少項。

它有助於了解您正在輸出的json數據結構,以及如何訪問由該json生成的對象中的某些元素。 在您的情況下,最終得到一個名為data對象(由.ajax成功回調定義)。 然后,該對象僅包含一個帶有對象數組的鍵名。 關鍵名稱是coordinates 在每個數組值內,是數據庫行返回中的一個對象。

如果您只想顯示對象數組中的一個對象,則只需要這些:

console.log( data.coordinates[0] );

那將顯示數組中的第一個對象(數組以[0]開頭)。

console.log( data.coordinates[999] );

那將顯示數組1000中的最后一個對象。

console.log( data.coordinates[ data.coordinates.length-1 ] );

它將使用自身作為確定器來顯示可變大小數組中的最后一個對象。

暫無
暫無

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

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