繁体   English   中英

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

[英]how to loop over array of objects and get values

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

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()数组解构来获取键和值。

注意:默认= []处理空对象的情况。

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

传递给.map函数的param变量是一个javascript对象,您不能仅使用object.key来访问其键。 而是:

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

在这里,我们获取了param对象的所有键,并获得了第一个(第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"]

您可以使用javascript过滤器

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM