请完整阅读。除非您真正找到它,否则不要将其标记为重复。我有一个像下面这样的对象数组。
const filterParams = [
{ 'waterfront_type[]': 'Cove' },
{ 'area[]': 'Applehead Island' },
{ 'waterfront_type[]': 'Channel' },
{ 'waterfront_type[]': 'Open Water' },
{ baths: '0 - 14' },
{ price: '0.00 - 9,876,100.00' }
];
我需要遍历并将其添加到表单数据中。我在做下面的事情。
filterParams.map(param => {
return formData.append(param.key, param.value);
});
预期:param.key是waterfront_type [],param.value是Cove。因此在内部应为formData.append('waterfront_type[]', 'Cove');
获取:两者均未定义。 formData.append(undefined, undefined);
答案 0 :(得分:3)
您可以使用Object.entries()
和array destructuring来获取密钥和值。
注意:默认的= []
处理空对象的情况。
filterParams.map(param => {
const [[key, value] = []] = Object.entries(param);
return formData.append(key, value);
});
如果只需要调用formData(key, value)
,而不关心返回的值(如果有),请使用Array.forEach()
而不是Array.map()
:
filterParams.forEach(param => {
const [[key, value] = []] = Object.entries(param);
formData.append(key, value);
});
答案 1 :(得分:0)
param
函数的 .map
变量是一个javascript对象,您不能仅使用object.key
来访问其键。而是:
filterParams.map(param => {
var keys = Object.keys(param);
return formData.append(keys[0], param[keys[0]]);
});
在这里,我们将获取param
对象的所有键,并获取第一个(第0个索引)作为您需要的键(假设您的数组中的对象带有一个键)。
答案 2 :(得分:0)
因此,您要将所有字典entrySet放入FormData中:
filterParams.forEach(param => {
Object.keys(param).forEach(function(key) {
let value = param[key];
formData.append(key, value);
});
});
它将产生以下输出:
["waterfront_type%5B%5D=Cove",
"area%5B%5D=Applehead%20Island",
"waterfront_type%5B%5D=Channel",
"waterfront_type%5B%5D=Open%20Water",
"baths=0%20-%2014",
"price=0.00%20-%209%2C876%2C100.00"]
答案 3 :(得分:-1)
您可以使用javascript过滤器
filterParams = filterParams.filter(function(itm){
Object.keys(itm).forEach(function(key, value){
return formData.append(key, value);
})
})