Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何简化else if语句,其中文本字符串求值与附加到的数组具有相同的名称?(JavaScript)_Javascript_Arrays_If Statement_Foreach - Fatal编程技术网

如何简化else if语句,其中文本字符串求值与附加到的数组具有相同的名称?(JavaScript)

如何简化else if语句,其中文本字符串求值与附加到的数组具有相同的名称?(JavaScript),javascript,arrays,if-statement,foreach,Javascript,Arrays,If Statement,Foreach,下面是一系列else if语句,其中一旦求值,就会将数据附加到与求值语句中硬编码字符串同名的数组中。我知道必须有一个相当简单的方法来提高效率,但我想不出一个解决方案,它不会使事情变得过于复杂 代码: 由于类别键对应于数组变量名,因此可以使用基于类别的动态键 此外,您可以使用concat将yAxis数据中的所有值复制到数组中,而无需遍历每个项 // Stores the dynamic key const key = categoryObject.category; // Appends an

下面是一系列else if语句,其中一旦求值,就会将数据附加到与求值语句中硬编码字符串同名的数组中。我知道必须有一个相当简单的方法来提高效率,但我想不出一个解决方案,它不会使事情变得过于复杂

代码:


由于类别键对应于数组变量名,因此可以使用基于类别的动态键

此外,您可以使用concat将yAxis数据中的所有值复制到数组中,而无需遍历每个项

// Stores the dynamic key
const key = categoryObject.category;

// Appends an array of variables (yAxis data) to one of your arrays using a dynamic key
this[key].concat(categoryObject.data.yAxis);

为什么不使用动态方法,并省略与
这件事无关的局部变量

categoryObject.data.yAxis.forEach(element => {
    // create array, if not exist
    this[categoryObject.category] = this[categoryObject.category] || [];
    // push value
    this[categoryObject.category].push(element);
});

您可以将数组存储在对象中,并使用类别作为键

var storage = {
  name: [],
  name2: [],
  name3: [],
  name4: [],
  name5: [],
  name6: [],
  name7: [],
  name8: [],
  name9: [],
  name10: [],
  name11: [],
  name12: [],
  name13: []
}
categoryObject.data.yAxis.forEach(element => {
  // console.log('y: ' + element);
  storage[categoryObject.category].push(element);
});

this[categoryObject.category].push(element)
?我的帖子之所以有“this”,是因为它是在导出类AppComponent实现OnInit{ngOnInit(){}中调用的。推送到数组的值是否需要在函数之前声明(比如var name=[];),这样就有了某种类型的存储,或者这是否会创建并存储足够长的值和数组,以满足同时需要的任何用途?
push
是一种数组方法。在按下之前,必须先初始化数组。数组的长度是动态的。添加了解释
var storage = {
  name: [],
  name2: [],
  name3: [],
  name4: [],
  name5: [],
  name6: [],
  name7: [],
  name8: [],
  name9: [],
  name10: [],
  name11: [],
  name12: [],
  name13: []
}
categoryObject.data.yAxis.forEach(element => {
  // console.log('y: ' + element);
  storage[categoryObject.category].push(element);
});