gpt4 book ai didi

javascript - 遍历已经存在的对象而不改变顺序

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:27 26 4
gpt4 key购买 nike

我知道对象的属性不能保证以任何特定顺序存储或读取。

我遇到的问题是,使用对象或数组不取决于我。我已经有一个很大且非常嵌套的 JSON 文件,如下所示:

{ "occasion": 23, "mayorstips": { "1": 0, "3": 0, "2": 0...

我只需要做一些修改。这就是我开始使用它的方式:

var campaign = JSON.parse(fs.readFileSync(theJSONFile));
for(var plot in plots) {
if(plots.hasOwnProperty(plot)) {
switch(plots[plot].province) {
case 'forest':
...

完成后,我将其放回原处:

fs.writeFileSync(theJSONFile, JSON.stringify(campaign));

现在,我注意到这种方法存在两个问题:

  1. 原始间距格式丢失。该原始文件只是一长行,并且需要是一长行,因此 JSON 库的任何格式化尝试都没有帮助。我通过一些正则表达式替换解决了这个问题。
  2. 现在“JSON 行”文件已排序。所以我从 { "1": 0, "3": 0, "2": 0{ "1": 0, "2": 0, "3": 0 结果证明这是一个大问题。
  3. 0 结尾的 float 将被 chop 。该文件需要 float 始终具有六位小数,例如34.293800。但当我打开它时,数字变为34.2938!

这是一个 35000 个字符的行。这是我如何解决问题 #2 和 #3?我可以对 #3 进行另一个正则表达式替换,但也许我缺少一些东西。

最佳答案

看问题和评论,确实是字符串操作。我不太清楚您想对数据做什么,但是,如果 json 使您的数据处理变得容易,您可以将两者结合起来。

  1. 假设您将其作为字符串读取,此时使用正则表达式将 1,3,2 的顺序存储在数组中的 { "1": 0, "3": 0, "2": 0... 中,同时在需要维护 0 的数字周围添加引号。
  2. 现在将此字符串转换为 json。
  3. 处理您的数据
  4. 将 json 转换回字符串(同时将您在步骤 1 中创建的数组转换回字符串中所需的格式 { "1": 0, "3": 0, "2": 0...)

也看看这个问题 How to keep an Javascript object/array ordered while also maintaining key lookups?

希望有帮助。祝一切顺利!

关于javascript - 遍历已经存在的对象而不改变顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38367237/

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