【问题标题】:Javascript: Parse JSON to Array of StringsJavascript:将 JSON 解析为字符串数组
【发布时间】:2021-05-04 04:10:09
【问题描述】:

我有下面的 JSON 以下面的集合、键和值的方式定义。

[{
    "set1": {
        "key1": "value1"
    },
    "set2": {
        "key2": "value2"
    },
    "set3": {
        "key3": "value3"
    },
    "set4": {
        "key4": "value4"
    } 
}]

我想知道如何使用普通/原生 javascript 以以下方式获取字符串数组,该数组仅包含各种值。

["value1","value2","value3","value4"]

我尝试过使用 Object.keys 和 Object.values 但仍然没有运气。知道如何用纯 javascript 处理它并且不使用任何第三方库会很有帮助。

【问题讨论】:

  • 您要删除重复项还是只显示所有值?
  • 这只是为了显示所有值。

标签: javascript arrays json data-structures


【解决方案1】:

解决方案:

const data = {
  "set1": {
    "key1": "value1"
  },
  "set2": {
    "key2": "value2"
  },
  "set3": {
    "key3": "value3"
  },
  "set4": {
    "key4": "value4"
  }
}
var result = Object.keys(data).map(_ => Object.values(data[_])[0]);
console.log(result);

这输出 ['value1','value2','value3','value4']

【讨论】:

  • 非常感谢,它确实有效 :) 但是如果我在 [data] 之类的数组中获取 json 怎么样
  • 在您的示例中,数据是一个包含单个条目的数组。如果这是一般情况,您可以使用 data[0]... 否则,您可以遍历该数组的项目。
【解决方案2】:

const data = [{
  "set1": {
    "key1": "value1"
  },
  "set2": {
    "key2": "value2"
  },
  "set3": {
    "key3": "value3"
  },
  "set4": {
    "key4": "value4"
  }
}]

console.log(data.reduce((values, o) => {
  Object.values(o).forEach(v =>
    values.push(...Object.values(v)));
  return values;
}, []));

// Or a more streamined version:

console.log(data.reduce((v, o) => v.concat(
Object.values(o).reduce((v, o) => v.concat(
Object.values(o))
, []))
, []));

【讨论】:

    【解决方案3】:

    这将涵盖多个数组对象的情况。

    let data_array = [
        {
        "set1": {
            "key1": "value1"
        },
        "set2": {
            "key2": "value2"
        },
        "set3": {
            "key3": "value3"
        },
        "set4": {
            "key4": "value4"
        } 
        },
      {
        "set5": {
            "key1": "value5"
        },
        "set6": {
            "key2": "value1"
        },
        "set7": {
            "key3": "value2"
        },
        "set8": {
            "key4": "value3"
        } 
        }
    ];
    
    let result =  data_array.reduce((accumulator, currentValue)=> {
        accumulator.push(...Object.keys(currentValue).map((key) => Object.values(currentValue[key])[0]));
      return accumulator;
    }, []);
    
    console.log(result)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 2018-06-11
      相关资源
      最近更新 更多