更改JavaScript对象键和数据的位置

时间:2017-07-07 07:37:55

标签: javascript jquery object javascript-objects

我正在研究javascript对象。我想以特定的顺序将数据传递给下一个数组。就像我得到这样的数据

var obj = [{
  0: "Owner Name"
  1: "Mailing Address"
  2: "Situs Address"
  3: "APN"  
}]

希望这个序列像这样

var obj = [{
  3: "APN"  
  0: "Owner Name"
  2: "Situs Address"  
  1: "Mailing Address" 
}];

是否有可能在数据的基础上这样做?因为我不知道从数据库序列可能会改变。 编辑:对于那些说我应该使用数组的人。我正在获取基于此对象的数据,如

 var data[{
  0:"CHANCE WILLIAM C & KATHRYN L"
  1:"P O BOX 7642 CHICO CA 95927"
  2:"LOT 4 PM 150-99/100"
  3:"040-310-086-000" }]

3 个答案:

答案 0 :(得分:1)

JavaScript对象中的键没有任何顺序。它们将以任何顺序显示,并且可以更改,因为订单不会保留。

如果您需要特定订单的数据,请使用数组。

保留顺序的字符串数组示例

var orderedItems = [
  "3: APN",
  "0: Owner Name",
  "2: Situs Address",
  "1: Mailing Address"
];

答案 1 :(得分:1)

对象中的属性不是,也不能以任何方式排序,因此您尝试做的事情是不可能的。如果您希望对值进行保证,则将它们放入数组中。

  

对于那些说我应该使用数组的人。我正在根据这个对象获取数据

在这种情况下,您可以使用Object.keys()map()将对象转换为数组:

var data = [{
  0: "CHANCE WILLIAM C & KATHRYN L",
  1: "P O BOX 7642 CHICO CA 95927",
  2: "LOT 4 PM 150-99/100",
  3: "040-310-086-000"
}];

var arr = Object.keys(data[0]).map(function(k) {
  return data[0][k];
});
console.log(arr);

答案 2 :(得分:1)

  

对象没有排序属性

所以你可以这样做,

将数组对象参数转换为单个对象。然后使用键的dec顺序排序

var obj = [{
  '0': "Owner Name",
  '1': "Mailing Address",
  '2': "Situs Address",
  '3': "APN" ,
}];

var array = Object.keys(obj[0]).map(function(a){
                  return ({[a]:obj[0][a]});
}) //recreate with individual object

var sorted= array.sort((a,b)=> Object.keys(b)-Object.keys(a))
 console.log(sorted) //sorted  object
 
var res = sorted.map(a=> Object.values(a)[0]) // for array

console.log(res)