有条件地在返回语句中包含 json 字段

Conditionally include json field inside return statement

本文关键字:包含 json 字段 语句 返回 有条件      更新时间:2023-09-26

所以,我遇到了一个问题,如果我找不到值或未定义,我通常会返回空字符串。这样:

return {
  _method: 'update',
  link: get(media, 'link', ''),
  caption: get(media, 'caption', '')
};

其中get()是一个 lodash 函数,如果它在提供的路径中找不到值,它只会返回一些东西(在本例中为空字符串)。

但是如果字段不存在,我现在不需要返回任何内容,我尝试了

return {
  _method: 'update',
  get(media, 'link', '') ? link: media.link : '',
  get(media, 'caption', '') ? link: media.caption : '',
};

但这不是有效的语法。

如果您不能拥有该字段,则不要即时创建对象。使用类似以下内容:

obj = {};
// add static values here.
obj["_method"] = 'update';
// dynamic now
if (get(media, 'link', ''))
  obj["link"] = media.link;
if (get(media, 'caption', ''))
  obj["caption"] = media.caption;
// And finally return the obj.
return obj;

这是我能想到的最好的方法。