Javascript 如何在对象数组上循环并获取值
请仔细阅读。在真正找到之前,不要将其标记为重复。我有一个如下所示的对象数组Javascript 如何在对象数组上循环并获取值,javascript,arrays,Javascript,Arrays,请仔细阅读。在真正找到之前,不要将其标记为重复。我有一个如下所示的对象数组 const filterParams = [ { 'waterfront_type[]': 'Cove' }, { 'area[]': 'Applehead Island' }, { 'waterfront_type[]': 'Channel' }, { 'waterfront_type[]': 'Open Water' }, { baths: '0 - 14'
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);
});
我需要循环这个,并将它添加到表单数据中。我在做下面的事
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(未定义,未定义)
param
变量传递给.map
函数是一个javascript对象,您不能仅使用对象.key来访问它的键。相反,你应该:
filterParams.map(param => {
var keys = Object.keys(param);
return formData.append(keys[0], param[keys[0]]);
});
这里,我们获取param
对象的所有键,并获取第一个(第0个索引)作为所需的键(假设您的数组中有带有一个键的对象)。param
变量传递给。map
函数是一个javascript对象,您不能仅使用对象.key
访问其键。相反,你应该:
filterParams.map(param => {
var keys = Object.keys(param);
return formData.append(keys[0], param[keys[0]]);
});
在这里,我们将获取param
对象的所有键,并获取第一个(第0个索引)作为所需的键(假设数组中有一个键的对象)。因此,您希望将所有字典条目集放入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"]
因此,您希望将所有字典条目集放入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"]
您可以使用和来获取键和值
注意:默认的=[]
处理空对象的情况
filterParams.map(param => {
const [[key, value] = []] = Object.entries(param);
return formData.append(key, value);
});
如果您只需要调用formData(key,value)
,而不关心返回的值(如果有),请使用而不是:
您可以使用和来获取键和值
注意:默认的=[]
处理空对象的情况
filterParams.map(param => {
const [[key, value] = []] = Object.entries(param);
return formData.append(key, value);
});
如果您只需要调用formData(key,value)
,而不关心返回的值(如果有),请使用而不是:
您可以使用javascript过滤器
filterParams = filterParams.filter(function(itm){
Object.keys(itm).forEach(function(key, value){
return formData.append(key, value);
})
})
您可以使用javascript过滤器
filterParams = filterParams.filter(function(itm){
Object.keys(itm).forEach(function(key, value){
return formData.append(key, value);
})
})
Expected:param.key是waterfront_type[]
如果您只想在数组中循环,那么为什么要使用.map
呢?请尝试使用formData.append(Object.keys(param)[0],Object.values(param)[0])@user3743266我不认为这样做会像您认为的那样做。Expected:param.key是waterfront_type[]
如果只想在数组中循环,为什么要使用.map
呢?请尝试使用formData.append(Object.keys(param)[0],Object.values(param)[0])@user3743266我不认为这是你认为它应该做的。如果你只想在数组中循环,为什么要使用.filter
?在数组中循环还是使用javascript过滤器我认为两者应该是一样的。不管怎样,您已经遍历了该数组,无论您使用的是过滤器、映射还是简单循环迭代。迭代的复杂性将是相同的。谢谢如果没有关系,为什么会有不同的方法-.filter
,.map
,.forEach
,。一些
,。每个
,。查找
?如果它们只是遍历数组,那么肯定需要一个数组。在任何PL中,数组迭代只在O(n)时间内完成。区别在于我们拾取(通过元素搜索)的方式可能是(二进制搜索方式、树形式或散列方式),在这种情况下,搜索可能需要O(logn)时间或O(1)时间,但所有这些都在排序数组上工作,因为对象数组,未排序,要使其排序,您需要快速排序或其他一些方法,这些方法本身需要O(nlogn)或O(n)时间。因此,无论您使用的是(filter、map或forEach…等等),您都需要以各种可能的方式迭代数组。我希望你说得清楚。但是你特别建议.filter
。为什么?与其他方法相比有什么优势?你知道为什么会有不同的吗?如果你只想在数组中循环,为什么要使用.filter
?在数组中循环还是使用javascript过滤器?我认为两者应该是相同的。不管怎样,您已经遍历了该数组,无论您使用的是过滤器、映射还是简单循环迭代。迭代的复杂性将是相同的。谢谢如果没有关系,为什么会有不同的方法-.filter
,.map
,.forEach
,。一些
,。每个
,。查找
?如果它们只是遍历数组,那么肯定需要一个数组。在任何PL中,数组迭代只在O(n)时间内完成。区别在于我们拾取(通过元素搜索)的方式可能是(二进制搜索方式、树形式或散列方式),在这种情况下,搜索可能需要O(logn)时间或O(1)时间,但所有这些都在排序数组上工作,因为对象数组,未排序,要使其排序,您需要快速排序或其他一些方法,这些方法本身需要O(nlogn)或O(n)时间。因此,无论您使用的是(filter、map或forEach…等等),您都需要以各种可能的方式迭代数组。我希望你说得清楚。但是你特别建议.filter
。为什么?与其他方法相比有什么优势?你知道为什么会有不同的吗?