javascript - 使用 jQuery 处理这些数据的正确方法是什么?

标签 javascript jquery arrays object

我有一个带有数据属性的 html 元素列表,我想将其组装成 jQuery 对象并操作这些值。

each 循环中动态添加这些内容的最佳方法是什么,以便我可以轻松访问数据,如下所示:data.namedata. name.prop

我希望所有命名约定都是动态的并且基于数据。

我的代码基于这里的最佳答案:How to create dynamically named JavaScript object properties?

到目前为止我已经:

$('.licences-list .data div').each(function(index) { 
    var data = {}
    cats[$(this).find('p').data('cat')] = $(this).find('p').data('catname')
    cats.push(data)
})

但是当我尝试迭代 data 数组时,如下所示:

$.each(cats, function(key, value){
    $('<div class="card"><p>'+value+'</p></div>').appendTo('#commercial-licenses');
});

我刚刚得到[object Object]输出...但我不知道为什么!

最佳答案

var data = {}
    cats[$(this).find('p').data('cat')] = $(this).find('p').data('catname')

每次循环时,实际上只是将一个空对象(数据)添加到数组(猫)中。然后,您将一个命名属性分配给 $.each 不知道的数组(cats)(它会忽略它们,因为它正在迭代实际的数组)。

我的猜测是你想要一个对象映射,如下所示: var cats = { "f1": "feline 1", "f2": "feline "};

在这种情况下,你想要的是:

var cats = {};
$('.licences-list .data div').each(function(index) { 
    cats[$(this).find('p').data('cat')] = $(this).find('p').data('catname')
})

如果您想要一个包含更多值的数组,而不仅仅是字符串(或添加到元素中的任何数据),则每次都创建新对象并将它们附加到 cats 数组中:

var cats = [];
$('.licences-list .data div').each(function(index) { 
    cats.push({
       'id': $(this).find('p').data('cat'),
       'name':  $(this).find('p').data('catname')
    });
})

这将为您提供一个可以使用 $.each 的数组,并使用以下方式访问值:value.id、value.name

关于javascript - 使用 jQuery 处理这些数据的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57610897/

相关文章:

javascript - 关于 javascript onclick 的问题

javascript - 将对象数组传递到母版页的内容页

javascript - 带有ajax的django模板上的CSS元素

jquery - php jquery 动态谷歌广告

bool 数组计数的 JavaScript 性能

javascript - 在 Javascript 中访问柱形图的数组时出现问题

javascript - 递归字符串输出

javascript - node.js 产生。退出事件立即触发

jquery - 如何从 WordPress 中的 jquery include 函数中删除版本查询变量

c - 在 if 语句中初始化一个 int 数组并在外部使用