将一组元素属性作为数组加载

时间:2019-04-15 16:09:43

标签: javascript jquery

我正在研究此演示代码。如何修改代码以从每个data[]的属性中获取.box中的数组?

let data = [];
$(".box").each(function(){
    data.push($(this).data('color'), $(this).data('size'));

});
console.log(data);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="box" data-color="red" data-size="large"></div>
<div class="box" data-color="white" data-size="large"></div>
<div class="box" data-color="green" data-size="medium"></div>
<div class="box" data-color="yellow" data-size="small"></div>

1 个答案:

答案 0 :(得分:1)

如评论所述,您需要将要推送的数据包装到数组中,如 @ r3wt 所述。但是,在您具有倍数属性的情况下,也许更适合使用对象数组:

let arrayOfData = [...$(".box")].map(
    box => ({
        color: $(box).data('color'),
        size: $(box).data('size'),
        category: $(box).data('category')
    })
);

console.log(arrayOfData);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="box" data-color="red" data-size="large" data-category="short"></div>
<div class="box" data-color="white" data-size="large" data-category="t-shirt"></div>
<div class="box" data-color="green" data-size="medium" data-category="shoes"></div>
<div class="box" data-color="yellow" data-size="small" data-category="short"></div>