Py学习  »  Jquery

将数组传递给jQuery每个函数以重新格式化数据

Matts • 5 年前 • 1489 次点击  

我有一组Json数据,需要重新格式化。

数据作为1对象的一部分按行进行如下结构:

"2019-12-27": Object{'a':'1', 'b':'2', 'c':'3', 'd':'4'} 

我想解析每一行,使其与此(或数组)类似,并将所有行合并为一个对象:

["2019-12-27", "1", "2", "3", "4"]

这是我尝试使用$的代码。每个函数都可以工作,但都失败了,因为数组不在内部函数的作用域内。- 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;
    });
});
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51988
 
1489 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Matt
Reply   •   1 楼
Matt    5 年前

不能使用短的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变量。

Andreas
Reply   •   2 楼
Andreas    5 年前

这不需要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);