javascript - 将复杂数据属性推入一个数组的问题
问题描述
我正在做下面的演示。如何将年龄属性中的所有数据加载到一个数组中,看起来像这样?
out = [48,14,139,49,15,135,51,15,140,49,15,135,51,15,140,52,16,141]
let agesindx =[];
$(".box").each(function(){
//agesindx.push($(this).data('ages').split(','));
agesindx.push($(this).data('ages'));
});
console.log(agesindx);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="box" data-ages="[48, 14, 139]"></div>
<div class="box" data-ages="[49,15,135],[51,15,140]"></div>
<div class="box" data-ages="[49,15,135],[51,15,140],[52,16,141]"></div>
解决方案
data-ages
应该是一个数组数组,如data-ages="[[48, 14, 139]]"
用于flat()
获取串联的子数组元素
let agesindx = [];
$(".box").each(function() {
agesindx.push($(this).data('ages'));
});
console.log(agesindx.flat());
console.log(agesindx.flat(2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="box" data-ages="[[48, 14, 139]]"></div>
<div class="box" data-ages="[[49,15,135],[51,15,140]]"></div>
<div class="box" data-ages="[[49,15,135],[51,15,140],[52,16,141]]"></div>
或者
使用JSON.parse()
let agesindx = [];
$(".box").each(function() {
agesindx.push(JSON.parse('[' + $(this).data('ages').toString() + ']'));
});
console.log(agesindx);
console.log(agesindx.flat(2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="box" data-ages="[48, 14, 139]"></div>
<div class="box" data-ages="[49,15,135],[51,15,140]"></div>
<div class="box" data-ages="[49,15,135],[51,15,140],[52,16,141]"></div>
推荐阅读
- reactjs - 如何将 URL 对象传递给 Material UI 按钮而不出错?
- c# - 针对 EF Core 和 SQL Server 数据库编写集成测试
- delphi - nerror:02001005 y nerror:2006D002:BIO OverByteICS 当创建 TX509 组件 Delphi
- python - 在 Pandas 中过滤上一个工作日
- c# - WPF DataGrid 单元格选择内容文本
- string - 更新一段字符串 postgres
- firebase - 是否可以在登录用户中创建用户
- python - 在页面上查找元素时遇到问题。硒,蟒蛇
- git - 如何在 VS Code 中将 Github Push/Pull 从用户/传递切换到 SSH
- scipy - 使用 lmfit.Model 或 scipy.optimize.curve_fit 优化函数的卷积