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

问题描述 投票:0回答:3

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

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);

谢谢。

javascript function
3个回答
2
投票

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

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

function foo(obj) {

}

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

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

0
投票

如下定义功能:

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

然后使用它foo(someObj),其中someObj是您的json。

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

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

0
投票

如果需要处理参数对象,例如删除值为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));
© www.soinside.com 2019 - 2024. All rights reserved.