如何将 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()
这是输出:输出的数据结构是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()