我有一个Rest API,它以以下形式返回数据:
["1.6.3","1.6.4","1.6.5","1.6.6","1.7.0","1.7.2"]
我需要这种格式的数据:
var options = [{ value: 'one', label: 'One' }, { value: 'two', label: 'Two', clearableValue: false }
];
获取数据后,我使用以下代码以所需格式映射数据:
if (this.state.coreversions) {
var options = [
this.state.coreversions.map(versions =>
`{ value: '${versions}', label: '${versions}' },`
)
];
}
此处变量版本等于Rest API返回的数据的单个值
任何帮助都将不胜感激。
答案 0 :(得分:2)
Array#map
返回一个数组,因此您不必将其括在方括号内。
修改您的代码如下:
if (this.state.coreversions) {
var options = this.state.coreversions.map(
versions => ({value: versions, label: versions})
);
}
// simplified this.state.coreversions to just coreversions
// only for the purposes of this snippet
var coreversions = ["1.6.3","1.6.4","1.6.5","1.6.6","1.7.0","1.7.2"];
if (coreversions) {
var options = coreversions.map(
versions => ({value: versions, label: versions})
);
}
console.log(options);
// logs out an array of objects:
// [
// { value: '1.6.3', label: '1.6.3' },
// { value: '1.6.4', label: '1.6.4' },
// { value: '1.6.5', label: '1.6.5' },
// { value: '1.6.6', label: '1.6.6' },
// { value: '1.7.0', label: '1.7.0' },
// { value: '1.7.2', label: '1.7.2' }
// ]
答案 1 :(得分:0)
我认为你的map函数正在返回一个字符串数组而不是对象。应该像:
return {value:'$ {versions}',label:'$ {versions}'}
注意上面没有围绕整行的刻度。
答案 2 :(得分:0)
React-Select需要一个对象数组,而不是一个字符串数组。
您可以遍历数据,将这些值放在一个对象中,然后将其推送到如下所示的数组中:
var results = ["1.6.3", "1.6.4", "1.6.5", "1.6.6", "1.7.0", "1.7.2"];
var selectData= [];
for (result of results) {
selectData.push({
value: result,
label: result
});
}
console.log(selectData);