繁体   English   中英

使用 javascript 中的数组从 JSON 中获取元素

[英]Fetch elements from JSON using an array in javascript

我有一个 javascript object 看起来像

dict1 =    {"key1":"value1",
             "key2":"value2",
             "key3":"value3",
             "key4":"value4",
             "key5":"value5"}

接下来我有一个数组,它是arr1 = ["key1","key2"]

我需要做的就是从数组中基于 dict1 的元素中获取值并将它们连接为字符串。
听起来很简单:

dict1[arr1[0]] + '-' + dict1[arr1[1]]

Output:

value1-value2

对我来说棘手的部分是数组arr1可以是任意长度,但始终是 dict1 中存在的键的子集。 例如:

arr1= ["key2","key5"]
arr1= ["key1","key5","key3"]
arr1= ["key4"]

基于这些输入,预计 output 之后:

value2-value5
value1-value5-value3
value4

我无法编写通用脚本来动态创建字符串

您可以 map 在您想从 object 中“提取”值的键上,并将所有这些值与join在一起。

 const dict1 = { "key1": "value1", "key2": "value2", "key3": "value3", "key4": "value4", "key5": "value5" } arr1 = ["key2", "key5"]; arr2 = ["key1", "key5", "key3"]; arr3 = ["key4"]; const pluckAndConcat = (obj, keys) => keys.map(key => obj[key]).join("-"); console.log(pluckAndConcat(dict1, arr1)); console.log(pluckAndConcat(dict1, arr2)); console.log(pluckAndConcat(dict1, arr3));

您可以使用 function 减少如下:

 let dict1 = {"key1":"value1","key2":"value2", "key3":"value3", "key4":"value4", "key5":"value5"}; let buildString = function(arr, obj) { return arr.reduce((a, s) => a.concat(obj[s]), []).join("-") }; console.log(buildString(["key2","key5"], dict1)); console.log(buildString(["key1","key5","key3"], dict1)); console.log(buildString(["key4"], dict1));

这很简单。

您只需一次取一个键并从您的dict中获取值,然后添加您的主字符串。

认为:

let dict1 = {
  "key1":"value1",
  "key2":"value2",
  "key3":"value3",
  "key4":"value4",
  "key5":"value5"
}

您可以使用 reduce 或 map。

reduce方式:

let genString = (subArray, obj) => subArray.reduce((acc, v, i) => [...acc, obj[v]]  ,[]).join('-')

map方式:

let genString = (subArray, obj) => subArray.map((v, i) => obj[v]).join('-')

你可以这样使用:

genString(["key1","key5","key3"], dict1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM