Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以使一个对象与另一个对象具有相同的顺序吗?_Javascript_Angularjs_Arrays_Object - Fatal编程技术网

Javascript 我可以使一个对象与另一个对象具有相同的顺序吗?

Javascript 我可以使一个对象与另一个对象具有相同的顺序吗?,javascript,angularjs,arrays,object,Javascript,Angularjs,Arrays,Object,我知道这个问题的标题已经没有意义了,因为物体的性质是无序的。但是,我想如果你看看这个链接在这里的屏幕截图,它会更有意义 下面是正在发生的事情。我正在创建一个名为$scope.gameConfigs的对象,它本身是根据我从服务器调用收到的数据创建的(一个对象)。此$scope.gameConfigs创建一组下拉菜单 基本上,我想做的是让下拉菜单显示以前保存的数据(如果数据存在)。当保存的数据存在时,服务器返回一个包含所有保存数据的对象。这些数据是按数字顺序排列的。我的问题是,保存的数据的顺序并不

我知道这个问题的标题已经没有意义了,因为物体的性质是无序的。但是,我想如果你看看这个链接在这里的屏幕截图,它会更有意义

下面是正在发生的事情。我正在创建一个名为$scope.gameConfigs的对象,它本身是根据我从服务器调用收到的数据创建的(一个对象)。此$scope.gameConfigs创建一组下拉菜单

基本上,我想做的是让下拉菜单显示以前保存的数据(如果数据存在)。当保存的数据存在时,服务器返回一个包含所有保存数据的对象。这些数据是按数字顺序排列的。我的问题是,保存的数据的顺序并不总是与我创建的$scope.gameConfigs中的数据相同,这导致我的下拉列表中出现空白字段

如果您查看我链接到的屏幕截图,您可以看到$scope.gameConfigs(旁边写有第30行的对象)中的键是Map、Server和Mode

第二个对象是从服务器返回的已保存数据,是一组对象,每个对象都有一个name属性(即下拉菜单的名称)。如果您看一下,顺序是服务器、映射和模式

我的问题是,如何使保存的数据对象复制$scope.gameConfigs对象的顺序?这可能吗?如果没有,最好的方法是什么

这是HTML和我的页面/控制器的控制器,如果有帮助的话:

<form class="form-horizontal" ng-controller="GamePreferenceCtrl">
    <div ng-repeat="(name, section) in gameConfigs">
        <label ng-bind="name"></label>
        <select class="form-control" ng-model="formData.settings[$index].value" ng-change="dropdownItemClicked(name, formData.settings[$index].value)">
            <option value="" disabled="disabled">---Please Select Option---</option>
            <option ng-repeat="item in section" value="{{item.value}}" ng-bind="item.value"></option>
        </select>
    </div>
    <div class="col-md-12" ng-include="gametemp"></div>
    <div class="row">
        <div class="hr-line-dashed"></div>
        <div class="text-center col-md-12 padding-15">
            <button class="btn btn-primary btn-lg" ng-click="saveGameSetting()" formnovalidate translate>
                <i class='fa fa-circle-o-notch fa-spin' ng-if="showBusy"></i>&nbsp;Save
            </button>
        </div>
    </div>
</form>
我知道这是一本很长的书,我真的很感激任何能帮我解决这个问题的人。谢谢大家!

你可以喜欢

varo={z:1,f:2,a:7}
p=Object.assign({},o),
q=对象分配(o)
log(o,p,o==p);

log(o,q,o==q)object.keys(obj)
),然后对它们进行排序,最后打印出每个键的每个值。但是你不能让Chrome按一定的顺序显示对象关键点。您还可以编写一个
toString
函数并调用它。您可以使用ES6
Map
。您应该简化问题。我敢肯定,你的问题可以用两行文字来概括,没有代码示例,无论如何都会很有趣;我想你可能和我在同一个平台上工作。我想给你捎个口信,但没有这样的事。我想合作,但此评论可能会在两分钟内被标记为垃圾邮件。。请与我联系,电话:felipe d mullen,电话:g。文科硕士i、 如果你有兴趣的话
  function GamePreferenceCtrl($scope, $filter, Tournament, Notification) {
    $scope.$parent.child.game = $scope;
    $scope.selectedItems = [];
    $scope.formData = {};

    $scope.loadConfig = function () {
      Tournament.loadGameConfig($scope.id).then(function (response) {
        $scope.gameConfigs = {};

        if (response.data.tournamentPrefs) {
          _.each(response.data.tournamentPrefs, function (val) {
            if ($scope.formData.settings === undefined) {
              $scope.formData.settings = [];
            }
            $scope.formData.settings.push({section: val.name, value: val.value});
          });
          $scope.formData = {};
        };

        $scope.dropdownItemClicked = function(name, value) {
          if($scope.formData.settings === undefined) {
              $scope.formData.settings = {};
              $scope.formData.settings[name] = value;
          } else {
            console.log('inside else');
              $scope.formData.settings[name] = value;
          }

        };

        _.each(response.data.provisions, function (val) {
            if ($scope.gameConfigs[val.section] === undefined) {
              $scope.gameConfigs[val.section] = [];
            }
            $scope.gameConfigs[val.section].push({name: val.key, value: val.value});
        });
      });
    };