javascript - 从对象数组设置变量的最佳方法

标签 javascript arrays function object ecmascript-6

我有以下代码,感觉有点多余,因为我多次迭代同一个数组,任何在保持可读性的同时进行改进的建议将不胜感激。

数组对象格式是一种标准格式,我在其中检查每个对象中的键以检查它是否符合特定条件,例如每个对象都包含一个值,或者只有其中一些对象包含等等 [{},{},{}]

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 方法(例如 someevery)是否有缺点或如果有更易读的方法来做到这一点。

这取决于。

如果数组n的大小通常非常小,那么从实际意义上来说,这并不重要。选择更具可读性的内容。如果您正在处理大量数组项,那么大 O 复杂性在实际层面上会发挥更大的作用。

在我看来,从 someevery 派生的 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/

相关文章:

php - 基于两列对多维数组中的数据进行分组

python - 如何在 Django 模板中调用带有参数的函数?

javascript - 尽管我的页面在浏览器中溢出但滚动条不起作用

javascript - 在 HTML5 中创建或打开数据库表

Netbeans 8.1 上的 Javascript es6 语法支持

javascript - 更新/检索函数中的私有(private)计数器

c - 为什么在我清除输入缓冲区时它不换行?

javascript - 如果我知道页面数,如何在 AngularJS 中创建页面项?

java - 如何在java面向对象编程中使用动态数组?

arrays - 如何从 Hive 映射中获取仅包含键的列表