我有一个数组,我想在其中循环遍历每个元素,并从传递给组件的props中找到它的值。
array = ['a','b','c']
我想将'this.props.a'的值保存到变量'a;同样,对于考虑到props的其他变量,确实保存了值,我该怎么做呢?
示例代码:
buildURL() {
const param_array=array = ['a','b','c']
const param_values=[];
let queryStringUrl = window.location.href.split('?')[0];
param_array.map((param)=>{
param_values.push(encodeURIComponent(this.props.param))
})
在这里,我需要this.props.search_item,this.props.search_type,this.props.article_quality和this.props.min_views。
我该怎么办?
答案 0 :(得分:2)
当前,您的代码在地图的每次迭代中寻找this.props.param
。请注意,这并不意味着它在props
中寻找等于变量param
的键,而是在props
中寻找称为"param"
的键(等效于this.props["param"]
。
要将变量用作对象中的键,您需要使用方括号表示法:this.props[param]
在您的代码中:
buildURL() {
const param_array=['search_term','search_type','article_quality','min_views'];
const param_values=[];
let queryStringUrl = window.location.href.split('?')[0];
param_array.map((param)=>{
paramValue = this.props[param];
param_values.push(encodeURIComponent(paramValue))
})
}
修改
要存储每个键的记录,param_array
中这些键的值对以及this.props
中的值,您可以按以下方式创建新对象:
buildURL() {
const paramArray=['search_term','search_type','article_quality','min_views'];
const paramObject = {};
for (const param of paramArray) {
paramObject[param] = this.props[param];
}
// ...
}
基本上,创建一个新的空对象(paramObject
),然后循环遍历param
中的每个paramArray
,并在新对象中为该参数赋值等于this.props
中的那个参数。最终对象将具有paramArray
中每个参数的键和来自this.props
的值。
答案 1 :(得分:1)
您可以尝试object[property]
param_array.map((param)=>{
param_values.push(encodeURIComponent(this.props[param]))
})
更新:
如果要将它们存储到变量中,可以使用reduce
。
buildURL() {
const param_array=['search_term','search_type','article_quality','min_views'];
let queryStringUrl = window.location.href.split('?')[0];
const param_values = param_array.reduce((acc, param)=>{
acc[param]= encodeURIComponent(this.props[param])
return acc;
}, {})
return param_values
}
现在您的param_values
是具有以下格式的对象
//param_values
{
search_term: /*encoded str*/,
search_type: /*encoded str*/,
...
}
您可以轻松访问它。