gpt4 book ai didi

javascript - 有没有一种简单的方法(希望使用 ES6+)来基于配置对象对数组值应用突变?

转载 作者:行者123 更新时间:2023-11-29 23:07:01 24 4
gpt4 key购买 nike

我正在尝试编写一个允许我配置数组值的函数。我想像这样创建配置对象:

var words = [
'spacejump',
'apples',
'graphics',
'javascript',
'peaches'
];

var configs = [{
upper_case:'first',
length:[6,8]
},{
upper_case:'last',
length:[7,9],
strip:'vowels'
},{
length:10,
strip:'consonants'
}]

然后将这些配置应用于另一个字符串数组(在本例中为单词)并输出结果,如下所示:

[
[
"Apples",
"Graphics",
"Peaches"
],
[
"spcjmP",
"grphcS",
"pchS"
],
[
"aai"
]
]

我正在努力开始,因为我正在尝试将结果过滤到新的单独数组中。

function configurate(config) {
for (var filter in config) {
switch (filter) {
case upper_case:
//capitalize either first or last letter
case length:
//include words with said length
case strip:
//strip vowels or consonants
}
}
}

function applyConfig(array, configs) {
//forEach() word in array apply config
//this is where I am confused a bit,
//
//
}

这就是我目前所做的,我遗漏了太多的实现,因为我担心我做这件事的效率不高。

最佳答案

您可以使用 lambda 函数创建配置操作并将它们包含在您的配置对象中。

现在您可以遍历 configs 数组,并为匹配配置长度要求的每个单词应用所有函数。

这是一个示例实现。可能在很多方面都可以做得更好,但我认为它可以满足您的需求。

var words = [
'spacejump',
'apples',
'graphics',
'javascript',
'peaches'
];

const config_functions = {
upper_case: {
first: s => s[0].toUpperCase() + s.slice(1),
last: s => s.slice(0, s.length - 1) + s[s.length - 1].toUpperCase()
},
strip: {
vowels: s => s.replace(/[aeiou]/ig,''),
consonants: s => s.replace(/[bcdfghjklmnpqrstvxz]/ig,'')
},
range: (s, ...range) => range[1] ? (s.length >= range[0] && s.length <= range[1]) : s.length >= range[0]
};


var configs = [{
modifiers: [
config_functions.upper_case.first
],
length: s => config_functions.range(s,6,8)
},{
modifiers: [
config_functions.upper_case.last,
config_functions.strip.vowels
],
length: s => config_functions.range(s,7,9)
},{
modifiers: [
config_functions.strip.consonants
],
length: s => config_functions.range(s,10)
}];

let res = configs.map(config => words
.filter(word => config.length(word))
.map(word => config.modifiers.reduce((acc, func) => acc = func(acc), word)));

console.log(res);

关于javascript - 有没有一种简单的方法(希望使用 ES6+)来基于配置对象对数组值应用突变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54557034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com