我具有以下功能
const exampleFunction = (var1, var2, var3) => {
return const targetObject = {
var1,
var2,
var3,
},
};
var2和var3是可选变量。
如果所有3个变量都发送到此函数,那么我需要返回具有3个字段的对象。
如果未定义var2,则只需要返回具有2个字段的对象。 如果未定义var3,则只需返回具有2个字段的对象。
如果未定义var2和var3,则只需要返回具有1个字段的对象。
答案 0 :(得分:1)
尝试一下:
const exampleFunction = (var1, var2, var3) => {
const targetObject = {};
if (var1) targetObject.var1 = var1;
if (var2) targetObject.var2 = var2;
if (var3) targetObject.var3 = var3;
return targetObject;
};
答案 1 :(得分:1)
将JSON.parse
与JSON.stringify
一起使用,因为JSON.stringify
将在转换过程中跳过undefined
,Function
和Symbol
。如果这些类型在数组中,它们将由null
自动检查到该数组中的JSON.stringify
。
const exampleFunction = (var1, var2, var3) => JSON.parse(JSON.stringify({
var1,
var2,
var3
}))
const outputs = exampleFunction(undefined, 2, undefined)
console.log(outputs)
输出:{ var2: 2 }
答案 2 :(得分:0)
我建议您先构建对象,然后摆脱未定义的值
const targetObj = {var1, var2, var3}
Object.keys(targetObj).forEach((key) => (targetObj[key] == null) && delete targetObj[key]);
如果可以确保var1,2,3是基本变量,则使用JSON字符串化和解析看起来不错。否则,它们将被转换为字符串(例如Date对象)。
答案 3 :(得分:0)
如果使用传统的函数语句不带来麻烦,您可以尝试
function anotherExampleFunction(var1, var2, var3) {
return Object.assign({}, Array.from(arguments).filter(argument => argument !== undefined));
}
const result1 = anotherExampleFunction(1, 2, 3);
const result2 = anotherExampleFunction(1, 2, undefined);
const result3 = anotherExampleFunction(1, undefined, 3);
const result4 = anotherExampleFunction(1, undefined, undefined);
console.log(result1, result2, result3, result4)
输出
{ '0': 1, '1': 2, '2': 3 } { '0': 1, '1': 2 } { '0': 1, '1': 3 } { '0': 1 }