簡體   English   中英

遍歷對象數組

[英]Loop through an array with objects

我從后端得到以下數組:

[Object { 7="77.105.239.8", 10="77.105.239.11", 18="77.105.239.19", more...}]

如何使用ng-options使用數組中的Ips填充選擇下拉列表?

上面的數組是后端的array_diff的結果在PHP中:

foreach($ips as $ip)
                {
                    $taken[] = $ip['ip'];
                }

                $start = (ip2long($serie->net) + 1);
                $antal = pow(2,(32-$serie->mask));

                for($i = $start; $i < ($start+$antal-3); $i++)
                {
                    if(end(explode(".", long2ip($i))) != "0")
                    {
                        $possible_ips[] = long2ip($i);
                    }
                }

                $poss = array_diff($possible_ips, $taken);

                return $poss;

實際上,您得到的數組只有一個字段,其中包含一個包含所需數據的對象。 我的建議是,在后端修復該問題。 這樣您就可以得到所需的內容->一個真正的數組。 像這樣:

[
     { "id":7, "ip":"77.105.239.8"},
     { "id":10, "ip":"77.105.239.150"}, 
     { "id":12, "ip":"77.105.239.12"}
]

由於array_diff返回一個關聯數組,我們需要將其轉換為一個非關聯數組並返回它(是否使用json_encode,取決於您的設置):

...
$poss = array_diff($possible_ips, $taken);
$res = [];
foreach ($poss as $key => $value) {
    $res[] = $value;
}
return json_encode($res);

如果您不希望或無法像m4lt3 Answer這樣修復要格式化的數據,則需要在對數據進行綁定之前對其進行一些預處理。

var originalData = [{ 7: "77.105.239.8", 10: "77.105.239.11", 18: "77.105.239.19"}];
var originalObject = originalData[0];
var newData = [];
for (var i in originalObject) {
  newData.push({'id': i, 'ip': originalObject[i]});
}
$scope.ipList = newData;

...然后您可以使用ngOptions綁定ngOptions

我認為您可以按原樣保留函數,除了將return語句更改為: return json_encode($poss);

暫無
暫無

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

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