gpt4 book ai didi

javascript - 将参数添加到函数以仅在值与数组中的名称匹配时执行

转载 作者:行者123 更新时间:2023-11-30 08:19:28 25 4
gpt4 key购买 nike

我有一个对象:

const oData = { 
name: 'Hound',
weapon: 'sword',
likes: 'Chicken, Arya, Revenge',
dislikes: 'Fire, Mountain, Lannisters'
};

我传递给这个函数:

fConvertValuesToArrays(obj) {
for (const i in obj) {
obj[i] = Array.isArray(obj[i]) ? obj[i] : [obj[i]];
}
return obj;
},

这在将所有值转换为数组时按预期工作,但我现在需要它仅在值与此数组中的任何值匹配时执行:

const aNamesToMatch = [ 'likes', 'dislikes' ];

是否可以将其用于函数,或者我是否需要一个单独的函数并在 fConvertValuesToArrays 中调用该函数?如果是这样,那将如何运作?

我试图在三元前添加一个 if 语句,但我没有按预期工作:

fConvertValuesToArrays(obj) {
for (const i in obj) {
if ( obj.likes || obj.dislikes ) {
obj[i] = Array.isArray(obj[i]) ? obj[i] : [obj[i]];
}
}
return obj;
},

最佳答案

您可以在数组 aNamesToMatch 上使用 includes()。并检查当前键是否在该数组内。

const oData = { 
name: 'Hound',
weapon: 'sword',
likes: 'Chicken, Arya, Revenge',
dislikes: 'Fire, Mountain, Lannisters'
};
const aNamesToMatch = [ 'likes', 'dislikes' ];
function fConvertValuesToArrays(obj,keys) {

for (const i in obj) {
if (keys.includes(i)) {
obj[i] = Array.isArray(obj[i]) ? obj[i] : [obj[i]];
}
}
return obj;
}
console.log(fConvertValuesToArrays({...oData},aNamesToMatch))

关于javascript - 将参数添加到函数以仅在值与数组中的名称匹配时执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56234192/

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