【问题标题】:Make 3 arrays correspond to each other with the first being the object name使3个数组相互对应,第一个为对象名称
【发布时间】:2019-12-25 03:08:17
【问题描述】:

我目前有多个看起来像这样的对象:

let object1 = {
     xyz: 'xyz1',
     arr: []
    },
    object2 = {
     xyz: 'xyz2',
     arr: []
    },
    object3 = {
     xyz: 'xyz3',
     arr: []
    }

这变得非常冗长和多余。无论如何我可以创建3个数组,例如:

let objName = ["object1", "object2", "object3"]
let xyzArr = ["xyz1", "xyz2","xyz3"]
let theArr = [[], [], [] ]

有没有办法相互对应?

【问题讨论】:

  • 您要解决的原始问题是什么?
  • @DavidThomas,我想要 3 个数组来构成对象:let object1 = {xyz: 'xyz1',arr: [] },...。而不是我必须手动添加它们

标签: javascript jquery arrays object


【解决方案1】:

我不确定你在问什么,但这将采用 3 个数组并将对象存储在 window

let objName = ["object1", "object2", "object3"];
let xyzArr = ["xyz1", "xyz2","xyz3"];
let theArr = [[], [], []];

objName.forEach((name, index) => {
  window[name] = {
    xyz: xyzArr[index],
    arr: theArr[index]
  };
});

console.log(object1);
console.log(object2);
console.log(object3);

我建议使用命名空间而不是使它们成为全局名称(更多关于 here),但我想这可行吗?

【讨论】:

  • 快速提问。我有一个 $.getJSON(json, result => {result.forEach((elem, i, array) => {object1.data.push({x:elem.val1, y:elem.val2})}) }); 所有 3 个对象都将具有相同的数据有没有办法让我不重复自己添加 object2.data.push... 并使用循环添加一次?
  • @noob 我需要更多示例数据来了解您要做什么,这有点过头了。
  • 我正在使用它来构建一个 highcharts 图表。 xyz1 是一个名称,'theArr` 是 x 和 y 数据
【解决方案2】:

没有自动从对象中获取objName 数组的方法,但是您可以创建一个存储[object1,object2,object3] 的中间数组,然后使用Array#map() 获取xyzArrtheArr 的属性数组为如下图:

let object1 = {
    xyz: 'xyz1',
    arr: []
  },
  object2 = {
    xyz: 'xyz2',
    arr: []
  },
  object3 = {
    xyz: 'xyz3',
    arr: []
  }
  
/* Intermediate step */
const array = [object1, object2, object3];

/* Map each item of array to obtain attribute arrays */
let xyzArr = array.map(item => item.xyz);
let theArr = array.map(item => item.arr);

console.log('xyz',xyzArr);
console.log('arr',theArr);

【讨论】:

  • 感谢您的回复。位我不想做let object1 = {xyz: 'xyz1',arr: []}... 但我希望我的 3 个数组对应于那个
  • 所以您想根据这些对象直接初始化源代码中的数组,而不是以编程方式执行此操作?
  • 我希望第一个数组中的 object1 成为我的 objectName,xyz:xyz1 成为我的第一个键值对,arr:[] 我的下一个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-17
  • 1970-01-01
  • 1970-01-01
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
相关资源
最近更新 更多