将数组传递给 jQuery 每个函数以重新格式化数据
Posted
技术标签:
【中文标题】将数组传递给 jQuery 每个函数以重新格式化数据【英文标题】:Pass array to jQuery each function to reformat data 【发布时间】:2020-04-17 11:57:39 【问题描述】:我有一个需要重新格式化的 Json 数据集。
作为 1 个对象的一部分,数据的结构是这样的:
"2019-12-27": Object'a':'1', 'b':'2', 'c':'3', 'd':'4'
我想解析每一行,使其像这样(或数组)并将所有行组合成一个对象:
["2019-12-27", "1", "2", "3", "4"]
这是我尝试使用 $.each 函数的代码,它大部分都有效,但由于数组来自内部函数的范围之外而失败。 - TypeError: parsed[count] is undefined
有没有办法将解析后的数组从外部循环传递到内部循环?
parsed = [];
var count = 0;
$.each(data, function(k, outer)
count += 1;
parsed[count][] = k;
$.each(outer, function(i, inner)
parsed[count][] = i;
);
);
【问题讨论】:
使用适当的语法更容易理解数据。看起来您正在从控制台复制和粘贴。如果是这种情况,请使用console.log(JSON.stringify(obj, null, 2))
并将其输出复制/粘贴到您的问题中。
另外,JSON 是一种文本格式;你所拥有的只是对象的一部分。
我的意思是它是一个数组或列表。我会编辑它
【参考方案1】:
你不需要 jQuery。 Object.entries()
、Object.values()
和 ...
spread syntax 会很好地完成这项工作:
const input =
"2019-12-27": 'a':1, 'b':2, 'c':3, 'd':4
,"2019-12-28": 'a':2, 'b':4, 'c':6, 'd':8
;
const output = Object.entries(input)
.map(entry => [entry[0], ...Object.values(entry[1])]);
console.log(output);
【讨论】:
为什么是DV?如果我确实错过了应该改进或删除的东西,只是好奇?【参考方案2】:您不能使用简写 C 语法 (list[] = val)
推送到数组。您将寻找一个名为 push
var x = []; // declare an array
var myObject = a: 1, b: 2 ; // Defining an example object
var mySecondObject = a: 3, b: 5 ; // another sample object
x.push(myObject);
x.push(mySecondObject);
console.log(x);
输出:
[
a: 1, b: 2 ,
a: 3, b: 5
]
如果我们使用您提供的代码:
var parsed = [];
var count = 0;
$.each(data, function(k, outer)
count += 1;
parsed[count].push(k);
$.each(outer, function(i, inner)
parsed[count].push(i);
);
);
如果要允许 push 确定基于自动 0 的索引,则不一定需要 count 变量。
【讨论】:
仍然收到TypeError: parsed[count] is undefined
我编辑了答案。我们忘记使用 var
关键字声明 parsed
。我的错。以上是关于将数组传递给 jQuery 每个函数以重新格式化数据的主要内容,如果未能解决你的问题,请参考以下文章
如何将 JSON 对象内的 JSON 数组传递给 jQuery 自动完成
提示用户输入 .gs 函数中的范围,将数组传递给 html 脚本并重新关注 HTML 对话框
将数组从jquery传递给python函数时如何设置url?