微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何填充复杂的文字对象 javascipt

如何解决我如何填充复杂的文字对象 javascipt

我有 2 个数组(命名国家和奖牌),其中包含需要放入一个对象字面量中的数据,以便获得以下输出

let countries= ['Korea','United States','Germany','Canada','Austria'];

let medals = ['Gold medal','Silver medal','bronze medal'];

let output = {
     categories: [],series: [
      {
        medal: '',year: [],}
    ]
 };

for(let i = 0; i < countries.length; i++){

   for(let j= 0; j < medals.length; j++){
   
      output.categories.push(countries[i]);
      output.series[j].medal = medals[j];
      output.series[j].year.push('1993');//any random year
   }
}

//desired output
    output = {
    categories: ['Korea','Austria'],series: [
      {
        medal: 'Gold medal',year: [1993,1996,2014,2017,1999],//1993 for Korea,1996 for USA,..
      },{
        medal: 'Silver medal',year: [1990,2012,1993],},{
        medal: 'bronze medal',year: [1987,1992,2013,2003],],};

年份是随机选择的。

解决方法

既然您已经创建了一个 output 对象

1) 您可以使用 spread syntax 直接复制 output.categories 数组中的所有元素。

2)对于output.series,您可以使用forEach来推送一个对象(等于奖牌数组长度的长度)。

medals.forEach((s) => {
  output.series.push({
    medal: s,// Second approach using Array.from
    year: Array.from({ length: countries.length },() =>
      randomNumber(1900,2021)
    ),});
});

let countries = ["Korea","United States","Germany","Canada","Austria"];

let medals = ["Gold medal","Silver medal","Bronze medal"];

let output = {
  categories: [],series: [],};

output.categories = [...countries];

function randomNumber(min,max) {
  return Math.floor(Math.random() * (max - min + 1) + min);
}

medals.forEach((s) => {
  output.series.push({
    medal: s,year: Array(countries.length)
      .fill(0)
      .map(() => randomNumber(1900,2021)),});
});

console.log(output);

,

let countries= ['Korea','United States','Germany','Canada','Austria'];
let medals = ['Gold medal','Silver medal','Bronze medal'];
let output = {
    categories: countries,series: medals.map(medal => ({
        medal,year: [ 1993 ]
    }))
};
console.log(output);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?