如何在JavaScripTt中为对象数组创建构造函数? [关闭]

问题描述 投票:0回答:1

我正在尝试在运行时创建一个对象,以表示Google图表的垂直轴刻度。

给出一个由用户定义范围的MIDI音符编号nn的数组,我需要将其转换为{v:nn,f:notes [nn]}形式的对象数组

((注释是文本名称的现有数组,例如nn = 60的“ C4”)。

最终结果将是这样的:

vAxisTicks= [
  {v: 56, f: notes[56-12]}, {v: 57, f: notes[57-12}, {v: 58, f: notes[58-1

[我认为一种方法是将Array与.map一起使用,但尽管有很多文献报道,但我看不到如何使用它来获取对象中的键!

javascript arrays google-visualization
1个回答
0
投票

如果我理解正确,您想生成这样的内容吗::

const notes = {};
const letters = ['A', 'A#', 'B', 'C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#'];
let num = 0;

for (let i = 21, y = 0; i <= 108; i++, y >= letters.length - 1 ? y = 0 : y++){
  if (letters[y] == "C") num ++;
  notes[i] = letters[y] + num;
}

//console.log(notes)

const output = Object.entries(notes).map(([key,val]) => {
  return {v: key, f: val}
});

console.log(output)
.as-console-wrapper { max-height: 100% !important; top: 0; }

输出为:

[
  {
    "v": "21",
    "f": "A0"
  },
  {
    "v": "22",
    "f": "A#0"
  },
  {
    "v": "23",
    "f": "B0"
  },
  {
    "v": "24",
    "f": "C1"
  },
  ...
]
© www.soinside.com 2019 - 2024. All rights reserved.