我有以下代码,感觉有点多余,因为我多次迭代同一个数组,任何在保持可读性的同时进行改进的建议将不胜感激。
数组对象格式是一种标准格式,我在其中检查每个对象中的键以检查它是否符合特定条件,例如每个对象都包含一个值,或者只有其中一些对象包含等等 [{},{},{}]
const getValue = arrayOfObjects => {
const hasA = arrayOfObjects.some(
object => arrayOfObjects.abc === 'val1'
);
const hasB = arrayOfObjects.every(
object => arrayOfObjects.abc === 'val2'
);
// the above 2 iterations are repeated about 4 more times for different checks
// then there are a few versions of the below assignment depending on the above variables
const hasC =
hasA ||
hasB;
// finally the function returns one of the values
if (hasA) {
return 'val10';
} else if (hasB) {
return 'val11';
} else if (hasD) {
return 'val12';
}
};
最佳答案
这听起来像是一个理论问题。听起来您想知道在同一个数组上反复使用一些 Array.prototype
方法(例如 some
和 every
)是否有缺点或如果有更易读的方法来做到这一点。
这取决于。
如果数组n
的大小通常非常小,那么从实际意义上来说,这并不重要。选择更具可读性的内容。如果您正在处理大量数组项,那么大 O 复杂性在实际层面上会发挥更大的作用。
在我看来,从 some
和 every
派生的 bool 变量非常具有可读性。
如果您遇到数组可能非常大的情况,您可以考虑尝试一步完成。 Array.prototype.reduce
将是一个很好的工具:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
关于javascript - 从对象数组设置变量的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61139882/