javascript - 如何简化文本字符串评估与附加到的数组同名的 else-if 语句? (JavaScript)

标签 javascript arrays if-statement foreach

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

代码:

name = [];
name2 = [];
name3 = [];
name4 = [];
name5 = [];
name6 = [];
name7 = [];
name8 = [];
name9 = [];
name10 = [];
name11 = [];
name12 = [];
name13 = [];

if (categoryObject.category === 'name1') {
    categoryObject.data.yAxis.forEach(element => {
        // console.log('y: ' + element);
        this.name1.push(element);
});
} else if (categoryObject.category === 'name2') {
    categoryObject.data.yAxis.forEach(element => {
        // console.log('y: ' + element);
        this.name2.push(element);
    });
} else if (categoryObject.category === 'name3') {
    categoryObject.data.yAxis.forEach(element => {
        // console.log('y: ' + element);
        this.name3.push(element);
    });
} else if (categoryObject.category === 'name4') {
    categoryObject.data.yAxis.forEach(element => {
        // console.log('y: ' + element);
        this.name4.push(element);
    });
} else if (categoryObject.category === 'name5') {
    categoryObject.data.yAxis.forEach(element => {
        // console.log('y: ' + element);
        this.name5.push(element);
    });
} else if (categoryObject.category === 'name6') {
    categoryObject.data.yAxis.forEach(element => {
        // console.log('y: ' + element);
        this.name6.push(element);
    });
} else if (categoryObject.category === 'name7') {
    categoryObject.data.yAxis.forEach(element => {
        // console.log('y: ' + element);
        this.name7.push(element);
    });
} else if (categoryObject.category === 'name8') {
    categoryObject.data.yAxis.forEach(element => {
        // console.log('y: ' + element);
        this.name8.push(element);
    });
} else if (categoryObject.category === 'name9') {
    categoryObject.data.yAxis.forEach(element => {
        // console.log('y: ' + element);
        this.name9.push(element);
    });
} else if (categoryObject.category === 'name10') {
    categoryObject.data.yAxis.forEach(element => {
        // console.log('y: ' + element);
        this.name10.push(element);
    });
} else if (categoryObject.category === 'name11') {
    categoryObject.data.yAxis.forEach(element => {
        // console.log('y: ' + element);
        this.name11.push(element);
    });
} else if (categoryObject.category === 'name12') {
    categoryObject.data.yAxis.forEach(element => {
        // console.log('y: ' + element);
        this.name12.push(element);
    });
} else if (categoryObject.category === 'name13') {
    categoryObject.data.yAxis.forEach(element => {
        // console.log('y: ' + element);
        this.name13.push(element);
    });
}

最佳答案

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

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

关于javascript - 如何简化文本字符串评估与附加到的数组同名的 else-if 语句? (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56710116/

相关文章:

vba - 根据 VBA 中的 If 语句插入箭头

c - 如何使用 isalpha 结果来启动 if 语句?

javascript - Jquery:未在 Codepen 项目中运行

arrays - 提取数组中的 tableViewCell 宽度?

javascript - jQuery 在变量中保存 css 背景颜色

c - C 中的数组加法

c++ - 二维数组为函数参数时,这两种写法有什么区别?

字符串比较中的 Bash glob

javascript - Node.js - 如何使用外部库(VersionOne JS SDK)?

javascript - 在 Scribus 中使用组合框填写文本字段