首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将对象名称值对作为参数传递给方法?

如何将对象名称值对作为参数传递给方法?
EN

Stack Overflow用户
提问于 2021-03-10 05:05:57
回答 2查看 1K关注 0票数 4

我有一个对象数组,它返回以下数据:

代码语言:javascript
复制
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()方法,以便通过灾难号获取进程列表。

代码语言:javascript
复制
if (response.type == API_DISASTER_BY_ID_GET_SUCCESS) {
  this.getProcessList();
}

根据上面的响应输出,如何正确地将"DSTR_NR“(灾难号)传递给我的方法?

更新

无论我从灾难下拉列表中选择哪个灾难,只需要将灾难值传递给getProcessList()方法,以便为进程下拉列表获取相应的进程列表。

代码语言:javascript
复制
<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);
  }}
/>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-10 05:20:27

可以使用Array.prototype.filter从响应中筛选对象数组。然后,可以将这些"DSTR_NR“对象的值传递给您的方法。如果只希望在筛选的对象数组中拥有来自每个value键的值,只需使用Array.prototype.map

代码语言:javascript
复制
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]));

票数 1
EN

Stack Overflow用户

发布于 2021-03-10 05:20:21

结果是一个数组,并且有多个"DSTR_NR",因此可以将多个值作为参数传递。

您可以使用过滤器

示例:

代码语言:javascript
复制
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"},
]

*/

要只获取数字,可以在筛选结果上使用地图

代码语言:javascript
复制
onlyNumbers =  filteredResult.map(d => d.value);

/*
 output:- 
    ["7777", "7172", "7002"]
*/

在一个班轮上:

代码语言:javascript
复制
result.filter(d => d.name === 'DSTR_NR').map(d => d.value);

/*
    output:- 
    ["7777", "7172", "7002"]
*/

输出可以简单地作为单个参数作为数组传递,也可以使用扩展运算符根据输出发送多个参数。

代码语言:javascript
复制
output = ["7777", "7172", "7002"];

// as a single paramater (array)
myFync(output);

// as multiple paramaters
myFunc(...output);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66558694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档