gpt4 book ai didi

javascript - jQuery.parseJSON 无序数组

转载 作者:行者123 更新时间:2023-11-28 19:33:41 25 4
gpt4 key购买 nike

初始 PHP 数组将属性存储为值和键上的相应 id

Array
(
[979] => Pict Model
[962] => Brand
[494] => Dimensions
[980] => Capacity
[981] => Power
[982] => List Price
[983] => Warrenty
[975] => USB Connection
[976] => Self Cleaning
[977] => Double Glass Door
[978] => Steam Function
[974] => Electricity Type
)

在下面的代码中,comparable_attr 保存 json 编码数组。之后,正如我 console.log(comparable_attr) 这给了我一个 php 数组的 json 顺序。

然后,在我解析JSON然后console.log之后,它以不同的顺序给了我数据。

var comparable_attr = '<?php echo json_encode($_comparable_attributes); ?>';
if(comparable_attr.length != 0){ //check for empty json
console.log(comparable_attr);
var obj = jQuery.parseJSON(comparable_attr);
console.log(obj);
}

问题:我想在解析JSON后以相同的顺序实现它。

得到的结果:

第一个 Console.log(comparable_attr) 给出:

{"979":"Pict Model","962":"Brand","494":"Dimensions","980":"Capacity","981":"Power","982":"List Price","983":"Warrenty","975":"USB Connection","976":"Self Cleaning","977":"Double Glass Door","978":"Steam Function","974":"Electricity Type"}

第二个 Console.log(obj) 给出:

 Object { 494="Dimensions", 962="Brand", 974="Electricity Type", more...}

enter image description here

已编辑:

我发现,它根据我的属性 id 进行短路,我需要的属性 id 的顺序与数组中的顺序相同。

最佳答案

当您将 PHP 备用数组转换为 JSON,然后转换为 JS 变量时,您将得到一个 JS 对象,而不是数组,并且 JS 对象明确是一个无序键值对集。

如果您希望保留顺序,则需要首先重新排列 PHP 端的数据,可能如下:

Array(
Array([979] => Pict Model),
Array([962] => Brand),
...
)

但请注意,如果您这样做,您将失去直接通过键查找数据的能力,因为生成的 JS 对象将如下所示:

[
{ "979": "Pict Model" }, // NB: all JS keys are strings
{ "962": "Brand" },
...
]

另一种方法可能是按原样发送现有数组,但也发送第二个数组,该数组只是键的有序列表。前者可用于基于键的查找,后者用于确定正确的顺序:

json_encode(array(
'data' => $_comparable_attributes,
'order' => array_keys($_comparable_attributes)
));

关于javascript - jQuery.parseJSON 无序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26294193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com