Javascript 如何在特定结构中推送数组中的元素

Javascript 如何在特定结构中推送数组中的元素,javascript,arrays,chart.js,push,Javascript,Arrays,Chart.js,Push,我需要将数组中的元素推送到循环中的中,但不知道如何操作。这是我的密码 var data={appNamesLables,datasets: [] }; var backgroundColorSGreen='#318CE7' var backgroundColorRed='#FF8C00' var backgroundColorYellow='#F49AC2' var lebel1='Green' var lebel2='Red' var lebel3='Yellow' for (let i

我需要将
数组中的
元素推送到
循环中的
中,但不知道如何操作。这是我的密码

var data={appNamesLables,datasets: [] };

var backgroundColorSGreen='#318CE7'
var backgroundColorRed='#FF8C00'
var backgroundColorYellow='#F49AC2'
var lebel1='Green'
var lebel2='Red'
var lebel3='Yellow'

for (let i = 0; i < appNamesLables.length; i++)
{
  var strToMatch=appNamesLables[i]
  //@ts-ignore
  const matches = Object.values(products).filter(s =>s.Name.toString().includes(strToMatch)); 
var green = matches.reduce(function (n, comp) {
     //@ts-ignore
    return n + parseInt(comp.statusGreen);
  }, 0);

var red = matches.reduce(function (n, comp) {
    //@ts-ignore
   return n + parseInt(comp.statusRed);
 }, 0);

 var yellow = matches.reduce(function (n, comp) {
  //@ts-ignore
 return n + parseInt(comp.statusYellow);
}, 0);


  //Here I need to push element
  data.datasets.push()
  data.datasets.push()
  data.datasets.push()
}

我需要在单个数组中推送所有
红色
,对于
绿色
黄色
也是如此。每次循环运行时,每种颜色的
数据都有一个计数:[
。黄色、红色和黄色变量返回
编号
。如何执行此操作?

您可以传递一个空数组作为reduce方法的初始值,而不是0,您可以将值插入数组并返回该数组,而不是添加值

var data={appNamesLables,datasets: [] };

var backgroundColorSGreen='#318CE7'
var backgroundColorRed='#FF8C00'
var backgroundColorYellow='#F49AC2'
var lebel1='Green'
var lebel2='Red'
var lebel3='Yellow'

for (let i = 0; i < appNamesLables.length; i++)
{
  var strToMatch=appNamesLables[i]
  //@ts-ignore
  const matches = Object.values(products).filter(s =>s.Name.toString().includes(strToMatch)); 
var green = matches.reduce(function (n, comp) {
     //@ts-ignore
    return [...n, parseInt(comp.statusGreen)];
  }, []);

var red = matches.reduce(function (n, comp) {
    //@ts-ignore
   return [...n, parseInt(comp.statusRed)];
 }, []);

 var yellow = matches.reduce(function (n, comp) {
  //@ts-ignore
 return [...n, parseInt(comp.statusYellow)];
}, []);


}

//Here I need to push element
  data.datasets.push({
     label: label1,
     backgroundColor: backgroundColorSGreen,
     data: green,
  })

  data.datasets.push({
     labe: label2, 
     backgroundColor: backgroundColorRed, 
     data: red })

  data.datasets.push({
     labe: label3, 
     backgroundColor: backgroundColorYellow, 
     data: yellow 
  })

这会更干净。

输入看起来如何?您需要的最终结果是什么?@TigranAbrahamyan-输入是
数字
only@BiswaBhusan-最终结果是在第一行定义的数据中获得给定结构,我问的是需要重新构造的JSON,如果是JSON,请添加它。您多次推bg颜色和标签,但我只需要3个位置。这不能在循环外完成吗。我需要计算为什么不使用map的每个字段的+数。我只是不需要这些价值观。每个迭代都有多个记录。所以需要添加这些值。是的,我刚刚根据您的结构更新了代码。如果要在循环外部执行此操作,则需要将
data.datasets.push({})
part移动到循环外部3种颜色。我正在更新代码。数据集中没有3个数组。我只是把所有记录连成一行。没有你的样本数据,我们不可能给你一个解决方案。请提供
应用程序名称标签
产品
的示例。或者创建一个js提琴来重现问题并共享链接。
var data={appNamesLables,datasets: [] };

var backgroundColorSGreen='#318CE7'
var backgroundColorRed='#FF8C00'
var backgroundColorYellow='#F49AC2'
var lebel1='Green'
var lebel2='Red'
var lebel3='Yellow'

for (let i = 0; i < appNamesLables.length; i++)
{
  var strToMatch=appNamesLables[i]
  //@ts-ignore
  const matches = Object.values(products).filter(s =>s.Name.toString().includes(strToMatch)); 
var green = matches.reduce(function (n, comp) {
     //@ts-ignore
    return [...n, parseInt(comp.statusGreen)];
  }, []);

var red = matches.reduce(function (n, comp) {
    //@ts-ignore
   return [...n, parseInt(comp.statusRed)];
 }, []);

 var yellow = matches.reduce(function (n, comp) {
  //@ts-ignore
 return [...n, parseInt(comp.statusYellow)];
}, []);


}

//Here I need to push element
  data.datasets.push({
     label: label1,
     backgroundColor: backgroundColorSGreen,
     data: green,
  })

  data.datasets.push({
     labe: label2, 
     backgroundColor: backgroundColorRed, 
     data: red })

  data.datasets.push({
     labe: label3, 
     backgroundColor: backgroundColorYellow, 
     data: yellow 
  })
var green = matches.map(item => item.statusGreen);
var red = matches.map(item => item.statusRed);
var yellow = matches.map(item => item.statusYellow);