在 Javascript 函数中接收 JSON 结构化参数



如何创建一个javascript函数,该函数将接收类似JSON的对象作为参数,如下所示:

function foo() {
//handle args somehow
}

然后能够像这样称呼它:

var someObj = {
arg1: "some",
arg2: "thing",
options: {
opt1: "asd",
opt2: false
}
}
foo(someObj);

另外,如何处理未发送到函数的参数(在这种情况下省略 opt2(:

var someObj = {
arg1: "some",
arg2: "thing",
options: {
opt1: "asd",
//opt2: false
}
}
foo(someObj);

谢谢。

您的问题与 JSON 无关。 这些是常规的 JavaScript 对象文字。

如果您的函数需要参数,正常的做法是这样定义您的函数:

function foo(obj) {
}

从那里,您可以像访问任何其他对象一样访问该对象的属性。

function foo(obj) {
console.log(obj.options.opt1);
}

定义函数如下:

function foo(obj) {
//handle args somehow
}

然后在 someObj 是您的 jsonfoo(someObj)使用它。

如果对象中缺少某个属性,则按以下方式处理它:

if (obj.options.opt2)
{
console.log('opt2 is available');
} 
else
{
console.log('opt2 is not available');
} 

如果您需要处理参数对象,例如删除值为 false 的键,那么您可以使用以下方法foo该方法获取对象并在删除后返回对象。

const foo = obj => ({
...obj,
options: Object.fromEntries(
Object.entries(obj.options).filter(([, value]) => value)
)
});
var someObj = {
arg1: "some",
arg2: "thing",
options: {
opt1: "asd",
opt2: false
}
};
console.log(foo(someObj));

最新更新