如何遍历对象数组并获取值

时间:2018-10-25 05:55:52

标签: javascript arrays

请完整阅读。除非您真正找到它,否则不要将其标记为重复。我有一个像下面这样的对象数组。

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);

4 个答案:

答案 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);
   })
 })