【问题标题】:Can we convert JSON Array of Objects to lightGalery Array of Objects?我们可以将 JSON 对象数组转换为 lightGalery 对象数组吗?
【发布时间】:2018-03-23 01:36:15
【问题描述】:

各位资深网络开发者大家好,我是网络开发的新手。我使用 lightGallery 插件来查看图像。但是我的图像路径存储在数组中。在从 ajax 响应获得的数组元素中始终是动态的。这是我的数组:

     var data = { "result" : [ 
                                { "file_name"  : "a.jpg" },
                                { "file_name"  : "b.png"},
                                  ......................
                             ]
     }       

// 这是 Lightgallery 数组语法

     $(this).lightGallery({
       dynamic: true,
       dynamicEl: [{"src": 'your image path'}, 
                   {'src': 'your image path'},
                    ........................
                  ]
     })

// 我想要这样:

     $(this).lightGallery({
       dynamic: true,
       dynamicEl: [{"src": 'a.jpg'}, 
                   {'src': 'b.jpg'},
                   ................
                  ]
     })

如何做到这一点?能不能?

感谢您的宝贵帮助。

【问题讨论】:

  • 您是否尝试过从您的 ajax 获取对象并将其推送到图库数组中?请添加您尝试过的代码
  • 就个人而言,如果我控制数据,我会将响应设为您真正想要的 JSON,否则循环。
  • 是的,我有。但控制台显示错误数组格式错误。
  • 这是我的代码:pastebin.com/ySeBVbjk
  • 文件名是否与图片的完整网址对应?

标签: javascript lightgallery


【解决方案1】:

Array.prototype.map()便于在原件的基础上新建arrays

请参阅下面的实际示例。

// Input.
const input = {
  result: [ 
    { "file_name"  : "a.jpg" },
    { "file_name"  : "b.png"}
  ]
}

// To Dynamic.
const toDynamic = ({result}) => ({
  dynamic: true,
  dynamicEl: result.map(x => ({src: x.file_name}))
})

// Output.
const output = toDynamic(input)

// Proof.
console.log(output)

【讨论】:

    【解决方案2】:

    您原来的 var data 实际上是一个对象 - 看看它是如何以 { 开头的。

    const data = { "result" : [ 
      { "file_name"  : "a.jpg" },
      { "file_name"  : "b.png"},
    ]};
    const dynamicElArr = data.result.map(({ file_name: src }) => ({ src }));
    console.log(dynamicElArr);

    那么你就可以将它用于dynamicEl

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-19
      • 2012-07-21
      • 2020-10-02
      • 1970-01-01
      • 2018-09-12
      相关资源
      最近更新 更多