jquery/json - 为键创建动态数组

Posted

技术标签:

【中文标题】jquery/json - 为键创建动态数组【英文标题】:jquery/json - create dynamic array for key 【发布时间】:2021-11-10 23:57:57 【问题描述】:

我没有找到,如何在 jquery 中创建一个带有键数组元素动态值的 json 消息。

我正在尝试构建这样的 json 消息:


    "line": 
        "name": "Test",
        "images": [
            
                "order": "1",
                "link": "https://google.com/1.jpg",
                "name": "1.jpg"
            ,
            
                "order": "2",
                "link": "https://google.com/2.jpg",
                "name": "2.jpg"
            
        ]
    

我未能将图片附加到消息中。

jsonObbj = ;
line = ;
line ["name"] = $("#name").val();
    
counter = 1;
$("div.carousel_image > img").each(function() 
    image = ;
    image ["order"] = counter;
    image ["name"] = $(this).attr('src');
    line ["images"].push(image); // How can I edit this image to the images array
    counter++;
);

// how can I add the line to the array

感谢您的帮助!

【问题讨论】:

【参考方案1】:

您需要将line.images 初始化为一个空数组。

jsonObbj = ;
line = ;
line ["name"] = $("#name").val();
line["images"] = []; // add this line

counter = 1;
$("div.carousel_image > img").each(function() 
    image = ;
    image ["order"] = counter;
    image ["name"] = $(this).attr('src');
    line ["images"].push(image); // How can I edit this image to the images array
    counter++;
);

注意,一般来说,当你的对象键是普通字符串时,你要使用点表示法:line.images

JSFiddle:https://jsfiddle.net/to4xhewu/

【讨论】:

【参考方案2】:

您需要将line.images 初始化为一个数组,然后才能开始推送它。您还应该确保使用constletvar 正确声明变量,否则它们将隐式全局

试试这个简单的object literal initialiser 替代方案

const jsonObbj = 
  line: 
    name: $("#name").val(),
    images: $("div.carousel_image > img").map((i, img) => (
      order: i + 1,
      name: img.getAttribute("src"),
      link: img.src
    )).get()
  

见https://api.jquery.com/map/

【讨论】:

以上是关于jquery/json - 为键创建动态数组的主要内容,如果未能解决你的问题,请参考以下文章

同时创建动态线程数

动态创建二维素组

php 二维数组中取某个唯一的键值为键名。(通过合并两个数组来创建一个新数组,其中的一个数组元素为键名,另一个数组的元素为键值。)

delphi 图像数组怎么创建和使用

将数组动态分配到带有指针参数的函数中

如何在vba动态数组不清空维数前提下快速将所有元素赋值为0, erase会把动态数组维数清空