javascript - 创建 JSON - 部分循环,部分纯字符串

标签 javascript jquery json

我有下面的代码,它在 DOM 中循环查找具有以“sale-”开头的 id 和属性“data-id”的元素,捕获值,然后去除左方括号和右方括号 -将其全部推送到一个 JSON 对象中:

els = $("div[id^='sale-']");
Array.prototype.forEach.call(els, function(el) {
var id = el.attributes[2].value.replace(/\[|\]/gi, "");

var jsonObject = {"id" :+id};

var myJSON = JSON.stringify(jsonObject);
console.log(myJSON+",")
});

这有效,输出是:

enter image description here

现在,当我想在循环前后应用一些静态 JSON 代码时,问题就来了。

我想要像下面这样的东西:

// static
dataLayer.push({
  'ecommerce': {
    'impressions': [

// loop portion
{"id":50450},
{"id":49877},
{"id":49848}, 
{"id":49912},
{"id":49860},
{"id":49825}, 
{"id":48291}, 
{"id":49667},

// static
]
  }
});

最佳答案

首先,您可以通过在 jQuery 对象上调用 map() 来简化数组的创建。从那里您可以简单地将结果数组添加到具有所需结构的对象中。试试这个:

var idArr = $("div[id^='sale-']").map(function() {
  var id = this.attributes[2].value.replace(/\[|\]/gi, "");
  return { id: +id };
}).get();

dataLayer.push({
  ecommerce: {
    impressions: idArr
  }
});

另请注意,this.attributes[2].value 可以改进,但您没有说明您希望以哪个属性为目标。

关于javascript - 创建 JSON - 部分循环,部分纯字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44648219/

相关文章:

javascript - 使用 onclick 切换特定的类元素

javascript - 单击时将 div 滑入和滑出,但原始页面未在页面加载时显示?

javascript - 如何强制两个元素同时悬停?

c# - 问题序列化 JSON 多维列表

json - Codable 与 swiftyjson。如何将我的代码转换为 Codable(值数组)

ajax - 如何使用CakePHP处理json api调用的应用程序错误?

javascript - Loopback相关模型属性问题

javascript - 如果我有多个打开相同模式弹出窗口的链接,则 Foundation Reveal 会出现问题

javascript - FFMPEG,使用图像选择区域插件模糊视频区域

jquery - 获取表格最后一行单元格的值