我有一个对象数组,它返回以下数据:
result [
{name: "Desc", value: "7777 - Florida Hurricane"}
{name: "DSTR_NR", value: "7777"}
{name: "Desc", value: "7172 - Virginia Severe Storm(s)"}
{name: "DSTR_NR", value: "7172"}
{name: "Desc", value: "7002 - Maryland Hurricane"}
{name: "DSTR_NR", value: "7002"}
]响应成功后,我需要将灾难号作为参数传递给我的getProcessList()方法,以便通过灾难号获取进程列表。
if (response.type == API_DISASTER_BY_ID_GET_SUCCESS) {
this.getProcessList();
}根据上面的响应输出,如何正确地将"DSTR_NR“(灾难号)传递给我的方法?
更新
无论我从灾难下拉列表中选择哪个灾难,只需要将灾难值传递给getProcessList()方法,以便为进程下拉列表获取相应的进程列表。

<Dropdown
placeholder={placeholder}
search
selection
clearable
options={options}
value={this.state.value}
style={style}
onChange={(e, d) => {
let result = d.options.filter(d => d.value === 'DSTR_NR');
console.log(result)
this.setState({ value: result });
this.props.saveReduxData(datapath, result);
}}
/>发布于 2021-03-10 05:20:27
可以使用Array.prototype.filter从响应中筛选对象数组。然后,可以将这些"DSTR_NR“对象的值传递给您的方法。如果只希望在筛选的对象数组中拥有来自每个value键的值,只需使用Array.prototype.map。
let result = [
{name: "Desc", value: "7777 - Florida Hurricane"},
{name: "DSTR_NR", value: "7777"},
{name: "Desc", value: "7172 - Virginia Severe Storm(s)"},
{name: "DSTR_NR", value: "7172"},
{name: "Desc", value: "7002 - Maryland Hurricane"},
{name: "DSTR_NR", value: "7002"}
];
// array of "DSTR_NR" key-value pairs
let disasterVals = result.filter(i => i.name === "DSTR_NR");
console.log(disasterVals);
// array of `value`'s
let values = disasterVals.map(i => i.value);
console.log(values);
function someMethod(val) {
return "Disaster Val: " + val;
}
// access value from array of objects
console.log(someMethod(disasterVals[0].value));
// or access value from array of `value`'s
console.log(someMethod(values[1]));
console.log(someMethod(values[2]));
发布于 2021-03-10 05:20:21
结果是一个数组,并且有多个"DSTR_NR",因此可以将多个值作为参数传递。
您可以使用过滤器。
示例:
result = [
{name: "Desc", value: "7777 - Florida Hurricane"}
{name: "DSTR_NR", value: "7777"}
{name: "Desc", value: "7172 - Virginia Severe Storm(s)"}
{name: "DSTR_NR", value: "7172"}
{name: "Desc", value: "7002 - Maryland Hurricane"}
{name: "DSTR_NR", value: "7002"}
]
// the filtered result will be
filteredResult = result.filter(d => d.name === 'DSTR_NR');
// the filtered result will be
/*
[
{name: "DSTR_NR", value: "7777"},
{name: "DSTR_NR", value: "7172"},
{name: "DSTR_NR", value: "7002"},
]
*/要只获取数字,可以在筛选结果上使用地图
onlyNumbers = filteredResult.map(d => d.value);
/*
output:-
["7777", "7172", "7002"]
*/在一个班轮上:
result.filter(d => d.name === 'DSTR_NR').map(d => d.value);
/*
output:-
["7777", "7172", "7002"]
*/输出可以简单地作为单个参数作为数组传递,也可以使用扩展运算符根据输出发送多个参数。
output = ["7777", "7172", "7002"];
// as a single paramater (array)
myFync(output);
// as multiple paramaters
myFunc(...output);https://stackoverflow.com/questions/66558694
复制相似问题