javascript - 将动态字符串传递给对象

标签 javascript

是否可以以某种方式将参数传递给对象?

类似于,

const messages = (str1, str2){
    1: `${str1} is not the same as ${str2}`,
    2: 'message2',
    3: 'message3',
    4: 'message4',
    5: 'message5',
    6: 'message6',
}

const validateInput = ({ str1 = '', str2 = '' }) => {
    if (str1 !== str2) {
        console.log(messages[1](str1, str2))
    }
}

validateInput('a', 'b')

我不是在寻找类似的东西,

const message = (str1, str2) => `${str1} is not the same as ${str2}`

我很想知道这是否可以专门用一个对象来完成。

最佳答案

您可以为所有消息和内部函数获取一个对象,该对象返回带有消息的字符串,具体取决于移交的字符串。

const messages = {
    1: (str1, str2) => `${str1} is not the same as ${str2}`,
    2: (str1, str2) => 'message2',
    3: (str1, str2) => 'message3',
    4: (str1, str2) => 'message4',
    5: (str1, str2) => 'message5',
    6: (str1, str2) => 'message6',
};

const validateInput = (str1 = '', str2 = '') => {
    if (str1 !== str2) {
        console.log(messages[1](str1, str2))
    }
}

validateInput('a', 'b');

如果你先调换调用messages的顺序(先带参数,再按数字),那么只需要一个函数。

const messages = (str1, str2) => ({
    1: `${str1} is not the same as ${str2}`,
    2: 'message2',
    3: 'message3',
    4: 'message4',
    5: 'message5',
    6: 'message6',
});

const validateInput = (str1 = '', str2 = '') => {
    if (str1 !== str2) {
        console.log(messages(str1, str2)[1])
    }
}

validateInput('a', 'b');

关于javascript - 将动态字符串传递给对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60222779/

相关文章:

javascript - 将对象转换为适合 ajax post 的数组

javascript - 如何使用 javascript 和 )/分割文本

javascript - 关于 Object.create() 和属性继承的混淆

javascript - 如何成为一名优秀的 JavaScript 程序员

javascript - 我怎样才能把我的 if else 变成三元

javascript - 确定哪个框架(名称)调用了 JavaScript 中的函数

javascript - Cordova 闹钟

javascript - 更改 v-for 数组中每个元素的属性

javascript - 使用日期选择器向表添加行

javascript - jquery/backbone/mustache/json 将 html 渲染为文本字符串