Пожалуйста, прочитайте полностью. Не отмечайте его дубликат, пока вы его не найдете. У меня есть массив объектов, как показано ниже.
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);
Вы можете использовать Object.entries()
и destructuring массива, чтобы получить ключ и значение.
Примечание: default = []
обрабатывает случай пустых объектов.
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);
});
вы можете использовать фильтры javascript
filterParams = filterParams.filter(function(itm){
Object.keys(itm).forEach(function(key, value){
return formData.append(key, value);
})
})
.filter
если все, что вам нужно, это .filter
массив?
Таким образом, вы хотите поместить весь словарь 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"]
переменная param
переданная в .map
является объектом javascript, и вы не можете получить доступ к ее ключам, используя только object.key
. Вместо этого выполните:
filterParams.map(param => {
var keys = Object.keys(param);
return formData.append(keys[0], param[keys[0]]);
});
Здесь мы получаем все ключи объекта param
и получаем первый (0-й индекс) в качестве необходимого ключа (при условии, что ваш массив имеет объекты с одним ключом).
Expected: param.key is waterfront_type[]
почему вы ожидаете этого?.map
, если все, что вам нужно - это циклически проходить по массиву?