Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-创建要推入数组的对象_Javascript_Arrays_Loops_Object_Chart.js - Fatal编程技术网

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) => ({ 
.....