为了账号安全,请及时绑定邮箱和手机立即绑定

在 For 循环中创建 JavaScript 数组

在 For 循环中创建 JavaScript 数组

慕仙森 2023-03-18 16:21:24
我想用 for 循环创建下面的数组作为它的大var centres = {    1979: { x: width * 1 / 41, y: height / 2 },    1980: { x: width * 2 / 41, y: height / 2 },    1981: { x: width * 3 / 41, y: height / 2 },    ...}然后按如下方式访问它:function nodeYearPos(d) {   return yearCenters[d.year].x;}我有以下代码,但它只设置年份......  var yearCenters = Array.from(new Array(2020-1919+1), (x, i) => i + 1919);  for (year = 1919; year <= 2020; year++) {    coords = getCentres(year); // this returns an object in the form {x : x, y : y}    yearCenters[year] = coords;  }
查看完整描述

2 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

你可以像 gorak 评论的那样做,但是使用 getCenters 函数


var yearCenters = Object.fromEntries(Array.from(new Array(2020-1919+1), (x, i) => [i + 1919, getCenters(i + 1919)]));

或者你也可以试试


var yearCenters = {};

for (year = 1919; year <= 2020; year++) {

  coords = getCenters(year);

  yearCenters[year] = coords;

}


查看完整回答
反对 回复 2023-03-18
?
繁花如伊

TA贡献2012条经验 获得超12个赞

当您尝试按年份获取yearCenters数组(例如yearCenters[year])时,这将不起作用,因为年份不是数组中的索引。


我建议您首先将数组转换为 JS 对象,以便对其进行索引可以使用多年。


见下面的片段 -


// Create obejct from array

var yearCenters = Object.fromEntries(Array.from(new Array(2020-1919+1), (x, i) => [i + 1919, null]))

     

// This loop remains same

for (year = 1919; year <= 2020; year++) {

    coords = getCentres(year); // this returns an object in the form {x : x, y : y}

    yearCenters[year] = coords; 

}


// Mock function

function getCentres(year) {

  return {

    x: Math.random() * 100,

    y: Math.random() * 100

  }

}


console.log(yearCenters)


查看完整回答
反对 回复 2023-03-18
  • 2 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信