我发了一个函数,我发送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;首先出现)。
答案 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 +功能。