簡體   English   中英

如何將對象推入同一個數組?

[英]How do i push objects into the same array?

我在將對象應用於數組時遇到問題,每次將對象推入數組時都會創建一個新數組。

我在問題的底部做了一些編輯。

我需要一組對象看起來像這樣

var arr = [{name: 'bent', town: 'kansas'}, { name:'benny', town:'vegas'}];

Insted 我的看起來像這樣

var arr = [0:{name: 'bent', town: 'kansas'}1:{ name:'benny', town:'vegas'}]

PHP

$stmt = $dbCon->prepare("SELECT ctc_coins_name, "
        . " ctc_coins_town "
        . " FROM ctc_coins ");
$stmt->execute();
$result_coins = $stmt->fetchAll();

$coins = [];
foreach ($result_coins as $result) {
    $coins[] = [
        'name' => $result['ctc_coins_name'],
        'twon' => $result['ctc_coins_town]
    ];
}
echo json_encode($coins);

Javascript

function update_local_coins() {
    var http = new XMLHttpRequest();
    var url = "pages/ajax/getCoins.php";
    http.open("POST", url, true);
    http.onreadystatechange = function () {
        if (http.readyState === 4 && http.status === 200) {
            if (this.responseText) {
                jsonObj = JSON.parse(this.responseText);
                console.log(jsonObj);
                var coins = [];
                for (var l in jsonObj) {
                    coins.push(jsonObj[l]);
                }
                console.log("COINS");
                console.log(coins);
            } else {
                alert("Noobs");
            }
        }
    };
    http.send();
}

我試過這個沒有運氣

coins.concat(jsonObj[l]) 'returns empty array'
coins.push.apply(coins, jsonObj[l]) 'returns empty array'
coins.push(jsonObj[l]) 'returns the example array'

編輯:

console.log(jsonObj);
(13) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
0
:
{name: "Bitcoin", usd: "5622.73", btc: "1.00000000"}
1
:
{name: "Ethereum", usd: "338.81", btc: "0.06013390"}
2
:
{name: "Litecoin", usd: "58.65", btc: "0.01040990"}
3
:
{name: "Dash", usd: "307.31", btc: "0.05454360"}
4
:
{name: "Golem", usd: "0.21", btc: "0.00003759"}
5
:
{name: "NEM", usd: "0.21", btc: "0.00003674"}
6
:
{name: "Neutron", usd: "0.15", btc: "0.00002686"}
7
:
{name: "DigiByte", usd: "0.01", btc: "0.00000175"}
8
:
{name: "Siacoin", usd: "0.00", btc: "0.00000074"}
9
:
{name: "Linda", usd: "0.00", btc: "0.00000005"}
10
:
{name: "LiteDoge", usd: "0.00", btc: "0.00000001"}
11
:
{name: "ArcticCoin", usd: "0.05", btc: "0.00000922"}
12
:
{name: "NoLimitCoin", usd: "0.13", btc: "0.00002321"}
length
:
13
__proto__
:
Array(0)

編輯:php echo json

[{"name":"Bitcoin","usd":"5622.73","btc":"1.00000000"},{"name":"Ethereum","usd":"338.81","btc":"0.06013390"},{"name":"Litecoin","usd":"58.65","btc":"0.01040990"},{"name":"Dash","usd":"307.31","btc":"0.05454360"},{"name":"Golem","usd":"0.21","btc":"0.00003759"},{"name":"NEM","usd":"0.21","btc":"0.00003674"},{"name":"Neutron","usd":"0.15","btc":"0.00002686"},{"name":"DigiByte","usd":"0.01","btc":"0.00000175"},{"name":"Siacoin","usd":"0.00","btc":"0.00000074"},{"name":"Linda","usd":"0.00","btc":"0.00000005"},{"name":"LiteDoge","usd":"0.00","btc":"0.00000001"},{"name":"ArcticCoin","usd":"0.05","btc":"0.00000922"},{"name":"NoLimitCoin","usd":"0.13","btc":"0.00002321"}]

您的目標是獲取在 AJAX 響應中收到的對象數組。

正如我在對您的問題的第一條評論中所說的那樣,您已經在這一行中得到了這個

jsonObj = JSON.parse(this.responseText);

現在,您似乎認為您收到了一個對象(數字是字段,對象是值)。 但這就是 console.log 的行為方式:)

至於關於確認確實是數組的方法的最后一個問題,您需要做的就是檢查JSON.parse()結果的字符串表示,即使用JSON.stringify 下面的例子演示了這一點。

編輯:已更新代碼片段,並在評論中發布了findMatches()演示。

 var s = '[{"name":"Bitcoin","usd":"5622.73","btc":"1.00000000"},{"name":"Ethereum","usd":"338.81","btc":"0.06013390"},{"name":"Litecoin","usd":"58.65","btc":"0.01040990"},{"name":"Dash","usd":"307.31","btc":"0.05454360"},{"name":"Golem","usd":"0.21","btc":"0.00003759"},{"name":"NEM","usd":"0.21","btc":"0.00003674"},{"name":"Neutron","usd":"0.15","btc":"0.00002686"},{"name":"DigiByte","usd":"0.01","btc":"0.00000175"},{"name":"Siacoin","usd":"0.00","btc":"0.00000074"},{"name":"Linda","usd":"0.00","btc":"0.00000005"},{"name":"LiteDoge","usd":"0.00","btc":"0.00000001"},{"name":"ArcticCoin","usd":"0.05","btc":"0.00000922"},{"name":"NoLimitCoin","usd":"0.13","btc":"0.00002321"}]'; var arrayOfObjects = JSON.parse(s); var stringifiedArray = JSON.stringify(arrayOfObjects); document.getElementById("op").innerText = stringifiedArray; function findMatches(arr, searchString) { const matches = []; arr.forEach(obj => { for(const key in obj) { if (obj[key].includes(searchString)) { matches.push(obj[key]); } } }); return matches; } var matches = findMatches(arrayOfObjects, "Lite"); document.getElementById("mr").innerText = JSON.stringify(matches);
 <p id="op"> <!-- Result of JSON.stringify will appear here --> </p> <hr> <p id="mr"> <!-- Result of findMatches will appear here --> </p>

暫無
暫無

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

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