【问题标题】:How to get key of multiple keys in json array and manipulate their data?如何获取json数组中多个键的键并操作它们的数据?
【发布时间】:2023-04-09 22:41:02
【问题描述】:

我想获取嵌套键并操作它们的数据。
我尝试了两种方法:

Example 1: 
    for (let key in the dictionary) {
        for (let keys in dictionary[key]) {
            console.log(keys) 
        }
    }
Example 2:
 for (let key in dictionary) {
     for (let k in lng.dictionary[key]["data"]) {
         console.log(k)
     }
 }

在示例 1 中,我得到了两个密钥 namedata

在示例 2 中,我只得到 a、b、c、d、yes、no、f、hgs、cft、vit。不是 他们的价值观。

但我想:

  1. 仅获取数据。

  2. 并像{"key":"a","value":"some text"},{"key":"b","value":"some text"},{"key":"c","value":"c for"},{},{}一样操纵它们的值。

这是我的 Json 对象

"dictionary" : {
                    "bar" : {
                            "name" : "Bar",
                            "data" : {
                                    "a" : "some text",
                                    "b" : "some text",
                                    "c" : "c for",
                                    "d" : "some text",
                                    "yes" : "true",
                                    "No" : "true",
                                    "f" : "some text"
                            }
                    },
                    "text" : {
                            "name" : "Text",
                            "data" : {
                                    "hgs" : "some text",
                                    "cft" : "some text",
                                    "vit" : "some text"
                            }
                    }
            }

【问题讨论】:

标签: javascript arrays json object key


【解决方案1】:

您可以使用 Object.values 来提取内部 data 对象以及 data 对象的每个 keyvalue,可以通过 @987654322 进行迭代@ 我们将形成一个temp 对象。

使用 Array.reduce 我们可以将temp 对象累积到一个数组中。

const data = {"dictionary":{"bar":{"name":"Bar","data":{"a":"some text","b":"some text","c":"c for","d":"some text","yes":"true","No":"true","f":"some text"}},"text":{"name":"Text","data":{"hgs":"some text","cft":"some text","vit":"some text"}}}};

const dataProcessed = Object.values(data.dictionary).reduce((acc, obj) => {
  Object.entries(obj.data).forEach(([key, value])=>{
    temp = {};
    temp["key"] = key;
    temp["value"] = value;
    acc.push(temp);
  });
return acc;
}, []);
console.log(dataProcessed);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 2012-05-02
    • 1970-01-01
    • 2021-12-27
    • 2017-02-09
    相关资源
    最近更新 更多