将对象发送到函数,获取错误的订单

时间:2018-04-25 09:40:00

标签: javascript jquery

我发了一个函数,我发送JSON。然后我使用console.log来查看它。我的代码是

function json($data) {
  console.log($data);
} 

json({
  "first_name": "First Name",
  "last_name": "Last Name",
  "phone": "Phone",
  "orgname": "Organisation Name",
  "email": "Email",
  "1": "Sign-up Date"
});

console.log($data);我收到如下输出:

{
  1: "Sign-up Date", 
  first_name: "First Name", 
  last_name: "Last Name", 
  phone: "Phone", 
  orgname: "Organisation Name", 
  email: "Email"
} 

但是我需要它像这样

{
  first_name: "First Name", 
  last_name: "Last Name", 
  phone: "Phone", 
  orgname: "Organisation Name", 
  email: "Email", 
  1: "Sign-up Date"
}

问题在于我实际上使用此代码而不是console.log

$.each($data, function(index, value) {
    $(".custom_fields_with_names").append('<option value="' + index + '">' + value + '</option>');
});

我正在以错误的顺序获取选项(&#34; 1&#34;首先出现)。

1 个答案:

答案 0 :(得分:1)

来自your comment

  

嘿,实际上在console.log后我使用$.each($json, function(index, value) { $(".custom_fields_with_names").append('<option value="'+index+'">'+value+'</option>'); });在选择框中附加值

这表示您想维持订单。如果是这样,请不要使用对象。虽然JavaScript对象有订单(现在,从ES2015开始),使用它几乎从来都不是正确的事情,正如您所注意到的那样,它们的订单并不是您想要的订单(具体而言:首先列出符合整数索引的属性名称,按数字顺序排列,然后按创建顺序列出其余属性[如果我们只考虑“自己的”属性])。

而是以有序的结构(如数组)提供数据到函数中:

json([
  {name: "first_name", value: "First Name"},
  {name: "last_name", value: "Last Name"},
  {name: "phone", value: "Phone"},
  {name: "orgname", value: "Organisation Name"},
  {name: "email", value: "Email"},
  {name: "1", value: "Sign-up Date"}
]);

然后

$.each($data, function(index, entry) {
    $(".custom_fields_with_names").append('<option value="' + entry.name + '">' + entry.value + '</option>');
});

我使用了$.each因为你做了,但当然你可以使用$data.forEach(function(entry) {...代替。我也只使用了ES5级功能,因为您的问题中没有任何迹象表明您正在使用ES2015 +功能。