Javascript 我可以使一个对象与另一个对象具有相同的顺序吗?
我知道这个问题的标题已经没有意义了,因为物体的性质是无序的。但是,我想如果你看看这个链接在这里的屏幕截图,它会更有意义 下面是正在发生的事情。我正在创建一个名为$scope.gameConfigs的对象,它本身是根据我从服务器调用收到的数据创建的(一个对象)。此$scope.gameConfigs创建一组下拉菜单 基本上,我想做的是让下拉菜单显示以前保存的数据(如果数据存在)。当保存的数据存在时,服务器返回一个包含所有保存数据的对象。这些数据是按数字顺序排列的。我的问题是,保存的数据的顺序并不总是与我创建的$scope.gameConfigs中的数据相同,这导致我的下拉列表中出现空白字段 如果您查看我链接到的屏幕截图,您可以看到$scope.gameConfigs(旁边写有第30行的对象)中的键是Map、Server和Mode 第二个对象是从服务器返回的已保存数据,是一组对象,每个对象都有一个name属性(即下拉菜单的名称)。如果您看一下,顺序是服务器、映射和模式 我的问题是,如何使保存的数据对象复制$scope.gameConfigs对象的顺序?这可能吗?如果没有,最好的方法是什么 这是HTML和我的页面/控制器的控制器,如果有帮助的话:Javascript 我可以使一个对象与另一个对象具有相同的顺序吗?,javascript,angularjs,arrays,object,Javascript,Angularjs,Arrays,Object,我知道这个问题的标题已经没有意义了,因为物体的性质是无序的。但是,我想如果你看看这个链接在这里的屏幕截图,它会更有意义 下面是正在发生的事情。我正在创建一个名为$scope.gameConfigs的对象,它本身是根据我从服务器调用收到的数据创建的(一个对象)。此$scope.gameConfigs创建一组下拉菜单 基本上,我想做的是让下拉菜单显示以前保存的数据(如果数据存在)。当保存的数据存在时,服务器返回一个包含所有保存数据的对象。这些数据是按数字顺序排列的。我的问题是,保存的数据的顺序并不
<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> 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
函数并调用它。您可以使用ES6Map
。您应该简化问题。我敢肯定,你的问题可以用两行文字来概括,没有代码示例,无论如何都会很有趣;我想你可能和我在同一个平台上工作。我想给你捎个口信,但没有这样的事。我想合作,但此评论可能会在两分钟内被标记为垃圾邮件。。请与我联系,电话: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});
});
});
};