Javascript: 改进具有嵌套 foreach 循环的代码
Javascript: Improve code having nested foreach loops
只是想知道这两个 forEach 循环是否可以展平或可以用任何其他更有效的解决方案代替。我的 GOOGLE_CRITERIA 列表太长(~1000 个元素)并且嵌套的 forEach 循环太过分了。
const openAddressSearch = ({ addressResponse, customerName }) => {
addressResponse.forEach(address => {
GOOGLE_CRITERIA.forEach(googleCriteria => {
if (address.get('addressLine1')) {
let addressCriteria = address
.filter((value, name) => name.startsWith('addressLine') && value)
.map(addressLine => `"${addressLine}"`)
.join('+');
addressCriteria += googleCriteria;
window.open(
buildGoogleSearchUrl({
customerName,
criteria: addressCriteria,
}),
'_blank',
);
}
});
});
};
也许您正在寻找这样的东西?
const openAddressSearch = ({ addressResponse, customerName }) => {
addressResponse.forEach(address => {
if (address.get('addressLine1')) {
let addressCriteria = address
.filter((value, name) => name.startsWith('addressLine') && value)
.map(addressLine => `"${addressLine}"`)
.join('+');
GOOGLE_CRITERIA.forEach(googleCriteria => {
window.open(
buildGoogleSearchUrl({
customerName,
criteria: (addressCriteria + googleCriteria),
}),
'_blank',
);
});
}
});
};
只是想知道这两个 forEach 循环是否可以展平或可以用任何其他更有效的解决方案代替。我的 GOOGLE_CRITERIA 列表太长(~1000 个元素)并且嵌套的 forEach 循环太过分了。
const openAddressSearch = ({ addressResponse, customerName }) => {
addressResponse.forEach(address => {
GOOGLE_CRITERIA.forEach(googleCriteria => {
if (address.get('addressLine1')) {
let addressCriteria = address
.filter((value, name) => name.startsWith('addressLine') && value)
.map(addressLine => `"${addressLine}"`)
.join('+');
addressCriteria += googleCriteria;
window.open(
buildGoogleSearchUrl({
customerName,
criteria: addressCriteria,
}),
'_blank',
);
}
});
});
};
也许您正在寻找这样的东西?
const openAddressSearch = ({ addressResponse, customerName }) => {
addressResponse.forEach(address => {
if (address.get('addressLine1')) {
let addressCriteria = address
.filter((value, name) => name.startsWith('addressLine') && value)
.map(addressLine => `"${addressLine}"`)
.join('+');
GOOGLE_CRITERIA.forEach(googleCriteria => {
window.open(
buildGoogleSearchUrl({
customerName,
criteria: (addressCriteria + googleCriteria),
}),
'_blank',
);
});
}
});
};