【问题标题】:json not getting printed in the correct order [duplicate]json没有以正确的顺序打印[重复]
【发布时间】:2016-03-05 16:45:18
【问题描述】:

我有一个名为 places.json 的 json 文件。内容是

{
    "Europe": [
        {
            "name": "London",
            "country": "England"
        },
        {
            "name": "Paris",
            "country": "France"
        }
    ],
    "Asia": [
        {
            "name": "Delhi",
            "country": "India"
        },
        {
            "name": "Tokyo",
            "country": "Japan"
        }
    ],
    "Africa": [
        {
            "name": "CapeTown",
            "country": "SouthAfrica"
        },
        {
            "name": "Abuja",
            "country": "Nigeria"
        }
    ]
}

这只是文件的一部分。文件很大。

现在我通过 Angular js 获取这个文件

myApp.controller('cityController', ['$scope', '$http', function ($scope, $http) {
    $http.get('places.json').success(function (data) {
        $scope.items = data;
    }).error(function (data) {
        console.log(data);
    });
}]);

然后我将 html 页面中的数据打印为

<div ng-repeat="(key,val) in items">
   <p> {{key}}</p>
   <div ng-repeat="place in val">
      <p>{{place.name}}</p>
      <p>{{place.country}}</p>
   </div>
</div>

我得到了输出,但顺序不正确。 (即)我首先打印亚洲及其地方和欧洲等。为什么会这样。如何以正确的顺序打印。

【问题讨论】:

    标签: javascript html angularjs json


    【解决方案1】:

    对象中键的顺序未定义。大多数浏览器按字母顺序实现它们,但它们可能会以它们想要的顺序返回。 如果您需要订购它们,则必须将它们放入一个数组中,并将每个名称放入一个新属性中(例如“名称”)

    来自ECMAScript Third Edition (pdf)的对象定义:

    4.3.3 对象 对象是对象类型的成员。 它是一个无序的属性集合,每个属性都包含一个基元 值、对象或函数。存储在属性中的函数 对象被称为方法。

    【讨论】:

    • 谢谢。我将更改 json 格式并将大陆名称也存储在属性中
    • np,你能把答案标记为正确吗?
    猜你喜欢
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    相关资源
    最近更新 更多