如何遍历多维 JSON 数据并将对应的值传递给函数调用
Posted
技术标签:
【中文标题】如何遍历多维 JSON 数据并将对应的值传递给函数调用【英文标题】:How to iterate through multidimensional JSON data and pass the corresponding values to a function call 【发布时间】:2020-04-14 09:36:25 【问题描述】:我有这个 JSON 数据
settings
"logo_dark":"logo_dark.png",
"logo_light":"logo_light.jpg",
"favicon":"favicon.png",
"hero_logo":"hero_logo.jpg",
"name":"Anime Stock",
"short_name":"AnimeStock",
"desc":"Description",
"keywords":"keywords"
如何调用函数来循环遍历所有值并根据传递给函数的参数返回数据。我希望能够做这样的事情:
getSiteSettings(logo_dark); // logo_dark.png
这是我尝试过的
getSiteSettings: (state) => (item) =>
const settings = state.siteSettings
for (const setting in settings)
if (settings.hasOwnProperty(setting))
const element = settings[setting].item;
return element;
【问题讨论】:
到目前为止你有什么尝试? 刚刚更新。请检查 “多维” ...在哪里?我看到了一个settings
对象,其中包含所有具有原始值的属性列表,即没有其他维度
getSiteSettings: (state) => (item) =>
- 你知道getSiteSettings
是一个返回函数的函数吗?如果不是,那么用logo_dark
(不正确)调用它与用"logo_dark"
(正确)调用它是不一样的
这个下面还有其他数组
【参考方案1】:
理解你需要做什么有点困难。但是根据你的输出,我可以提供这样的答案。
var settings =
"logo_dark":"logo_dark.png",
"logo_light":"logo_light.jpg",
"favicon":"favicon.png",
"hero_logo":"hero_logo.jpg",
"name":"Anime Stock",
"short_name":"AnimeStock",
"desc":"Description",
"keywords":"keywords"
;
function getSiteSettings(val)
for(var key in settings)
if(key === val)
return settings[key];
console.log(getSiteSettings("logo_dark"));
【讨论】:
【参考方案2】:如果你有一个属性数组,那么你可以filter
数组如果对象中有some
属性:
const result = Object.entries(obj)
.filter(([k, v]) => props.some(s=> s == k))
.map(([k, v])=> v);
一个例子:
let settings =
"logo_dark":"logo_dark.png",
"logo_light":"logo_light.jpg",
"favicon":"favicon.png",
"hero_logo":"hero_logo.jpg",
"name":"Anime Stock",
"short_name":"AnimeStock",
"desc":"Description",
"keywords":"keywords"
;
const getByProperties = (obj, props) =>
return Object.entries(obj)
.filter(([k, v]) => props.some(s=> s == k))
.map(([k, v])=> v);
console.log(getByProperties(settings, ['logo_dark', 'logo_light','favicon']));
【讨论】:
以上是关于如何遍历多维 JSON 数据并将对应的值传递给函数调用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 playframework 中提交带有多维数组的表单并将变量传递给控制器的操作