代码之家  ›  专栏  ›  技术社区  ›  m9m9m

如何循环对象数组并获取值

  •  1
  • m9m9m  · 技术社区  · 6 年前

    请详细阅读。除非你真的找到它,否则不要把它标为副本。我有一个像下面这样的对象数组。

    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为滨水_type[],param.value为cove。所以在内部应该是 formData.append('waterfront_type[]', 'Cove');

    获取:两者都未定义。 formData.append(undefined, undefined);

    4 回复  |  直到 6 年前
        1
  •  3
  •   Ori Drori    6 年前

    你可以用 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);
    });
    
        2
  •  0
  •   Imesha Sudasingha    6 年前

    param 变量传递给 .map 函数是一个javascript对象,不能仅使用 object.key . 改为:

    filterParams.map(param => {
       var keys = Object.keys(param);
       return formData.append(keys[0], param[keys[0]]);
    });
    

    这里,我们拿到了 帕拉姆 对象,并获取第一个(第0个索引)作为所需的键(假定数组中的对象只有一个键)。

        3
  •  0
  •   Beri    6 年前

    因此,要将所有字典条目集放入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"]
    
        4
  •  -1
  •   Parit    6 年前

    您可以使用javascript过滤器

     filterParams = filterParams.filter(function(itm){
       Object.keys(itm).forEach(function(key, value){
         return formData.append(key, value);
       })
     })