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
初始化为一个数组,然后才能开始推送它。您还应该确保使用const
、let
或var
正确声明变量,否则它们将隐式全局。
试试这个简单的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 二维数组中取某个唯一的键值为键名。(通过合并两个数组来创建一个新数组,其中的一个数组元素为键名,另一个数组的元素为键值。)