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

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

我有一个javascript对象,它看起来像

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

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

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

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

输出:

value1-value2

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

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

基于这些输入,我们希望得到以下输出

value2-value5
value1-value5-value3
value4

我在写一个动态创建字符串的通用脚本时遇到了麻烦。

javascript arrays json
3个回答
4
投票

你可以映射到你想从对象中 "摘取 "值的键,并将所有这些值用以下方法连接起来 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));

2
投票

你可以使用函数reduce如下。

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

1
投票

很简单.

你所需要做的就是每次取一个键,然后从你的 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 way:

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

你可以用这样的方式。

genString(["key1","key5","key3"], dict1)
© www.soinside.com 2019 - 2024. All rights reserved.