Javascript-创建要推入数组的对象
我有两个阵列,其中:Javascript-创建要推入数组的对象,javascript,arrays,loops,object,chart.js,Javascript,Arrays,Loops,Object,Chart.js,我有两个阵列,其中: var arrayX = ["02/01/2014", "14/10/2014", "03/05/2014"]; var arrayY = [2, 10, 8]; 我想创建3个不同的对象,每个对象是: {x: "02/01/2014", y: 2} {x: "14/10/2014", y: 10} {x: "03/05/2017", y: 8}
var arrayX = ["02/01/2014", "14/10/2014", "03/05/2014"];
var arrayY = [2, 10, 8];
我想创建3个不同的对象,每个对象是:
{x: "02/01/2014", y: 2}
{x: "14/10/2014", y: 10}
{x: "03/05/2017", y: 8}
并创建一个包含所有3个对象的数组
所以我的代码是:
var data = [];
for (var i = 0; i < arrayX.length; i++){
var object = {x: arrayX[i], y: arrayY[i]};
data.push(object);
}
我能做什么?只要确保arrayX和arrayY的长度相同即可
let arrayX = ["02/01/2014", "14/10/2014", "03/05/2014"];
let arrayY = [2, 10, 8];
let data = [];
for (let i in arrayX) {
data.push({
x: arrayX[i],
y: arrayY[i]
});
}
console.log('data: ' + JSON.stringify(data));
合并它的一种方法是在一个数组上映射,并在第二个数组中引用索引:
const arrayX = ["02/01/2014", "14/10/2014", "03/05/2014"];
const arrayY = [2, 10, 8];
const data = arrayX.map((item, index) => ({
y: arrayY[index],
x: item,
}));
console.log(data);
结果是:
[
{ y: 2, x: '02/01/2014' },
{ y: 10, x: '14/10/2014' },
{ y: 8, x: '03/05/2014' }
]
对于较深的嵌套结构,需要进行小的修改以适应它们。例如
const arrayX = [ ["02/01/2014", "14/10/2014", "03/05/2014"] ];
const arrayY = [2, 10, 8];
const data = arrayX[0].map((item, index) => ({
.....
“但是我得到的结果是一个只有一个包含三个X和三个Y的对象的数组”不,它生成了一个包含三个对象的数组,正如您所说的:代码很好(除了使用
var
;-)--在现代JavaScript中,不要使用var
,使用let
或const
)。我猜您的输入可能是您不期望的。你能创建一个例子来说明这个问题吗?你让我注意到我收到的两个数组(arrayX和Arrayy)都是在一个数组中给出的(arrayX=[[“02/01/2014”,“14/10/2014”,等等]…对不起,这是我的疏忽。(我白白浪费了这么多时间)您是否记录了错误的对象?这与OP的代码基本相同。唯一的区别是他对对象使用了一个临时变量。您是否阅读了注释,其中他们说,arrayX
实际上嵌套了一层深度?我刚刚阅读了它。显然,当提供预期输入时,他的代码工作正常。我只是假设d不是。您是否阅读了说明问题在于arrayX
值嵌套更深一层的注释。除此之外,代码可以工作。我没有看到嵌套更深一层的示例-您没有看到以您开头的注释让我注意到我的两个数组(arrayX和array Y)我收到的是一个数组中的每一个?
const arrayX = [ ["02/01/2014", "14/10/2014", "03/05/2014"] ];
const arrayY = [2, 10, 8];
const data = arrayX[0].map((item, index) => ({
.....