如何将 List<Pair<String,String>> 转换为 javascript 中的 List<String>?

How can you convert a List<Pair<String,String>> to List<String> in javascript?

这是输出:输出的数据结构是Map<String, List<Pair<String, String>>>

    "testdata": [
        {
            "1.0": "True"
        },
        {
            "1.1": "False"
        }
]

现在我需要在 UI 上将此数据显示为 "testdata":["1.0","1.1","1.2"], 其中从 Pair 中,我只想从 Pair 中获取第一个元素并将它们放入结构 Map<String, List<String>>

那么如何在 javascript 中编写该代码以获得该输出?

this.previousData = versions.filter(v => v !== this.version).map(item => ({ text: item, value: item }))

如何修改此代码以获得此输出 "testdata":["1.0","1.1","1.2"]

你的问题不太清楚你正在努力解决的问题

所以要获取数据

async getData()
{
    const resp = await fetch("<<your url from your java service>>" )
    return await resp.json();
}

按照您希望的方式格式化数据

formatData(json){
    return json.testdata.map((i)=>Object.entries(i).map(([k,v])=>k)).flat()
}

并在vue中显示

<template>testdata:{{testdata}}</template>
<script>
...
     methods:{
        async populatedata(){
            const tmp = await getData()
            this.testdata = formatData(tmp)
        }
     }
...
</script>

Object.entries 会将对象转换为元组数组,因此 {"1.0":"True","1.1":"False"} 将变为 [["1.0","True"],["1.1":"False"]],然后您可以使用元组分解来获取键

如果您不需要这些值,您也可以使用 Object.keys(),但从上下文中不清楚,所以我给了您更灵活的选择

您可以尝试这样的操作:


// This assumes that there will be only one key in each array item, or the first key in each array item denotes the version

this.previousData = 
    versions
     .filter(v => v !== this.version)
     .map(item => Object.keys(item)[0])

// or as MikeT suggested, if you are only expecting something like this:
// [
//  { "v1": "some value 1" },
//  { "v2": "some value 2" },
//  ... in general --> { "version": "some value" }
// ]
// you may try this as well
this.previousData = 
    versions
     .filter(v => v !== this.version)
     .map(item => Object.keys(item))
     .flat()