微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果我需要 JS 中第一个循环的结果,如何避免运行两个循环

如何解决如果我需要 JS 中第一个循环的结果,如何避免运行两个循环

我在 Javascript 中有一个数组,我需要对数组进行 for 循环以找到最小整数,结果需要遍历所有值。 例如:[1,2,3,4,5]

然后我需要使用这个整数在这个数组中做另一个操作。所以我需要再次执行 for 循环,并执行以下操作:if(i === 1){ //do something }。问题是我无法在第一个循环中执行此操作,因为在执行进一步操作之前我需要遍历它们。

那么,问题是,如何避免在 javascript 中编写两个循环而不是一个循环?

解决方法

在给定数据的注释中,您可以使用单个循环减少数组并选择具有最小 key 值的对象。

这仅对未排序的数组或排序未知的数组有意义。

var array = [{ key: "1",value: "apple" },{ key: 2,value: "orange" },{ key: "3",value: "lemon" }],min = array.reduce((a,b) => +a.key < +b.key ? a : b);

console.log(min.value);

,

没有通用的答案可以用来避免“循环两次”。有些问题可能只需要您这样做。但是,对于您的特定问题,可以在一个循环中解决。这是一个非常简单的例子。

let arr = [
  {
    "key": "1","value": "apple"
  },{
    "key": "2","value": "orange"
  },{
    "key": "3","value": "lemon"
  }
];

let minObj = arr[0];
for (let i = 1; i < arr.length; i++) {
  if (+minObj.key > +arr[i].key) {
    minObj = arr[i];
  }
}
console.log(minObj);

当然有很多方法可以做到这一点。

,

问题是我无法在第一个循环中执行此操作,因为在执行进一步操作之前我需要遍历它们。

你说得对。由于您必须遍历数组,因此无法同时执行;

  • 一次确认最小值是多少
  • 再次遍历每个最小值

这是一个示例,显示了每个必需的循环和我们将所有最小值设置为 0 的突变

const getMin = (arr) => Math.min(...arr) // First loop
const mutateArrValues = (arr,value,mutation) => arr.map(ent => {
  if (ent === value) {
    return mutation(ent)
  }
  return ent
}) // Second loop

const exampleArr = [3,5,1,8,2,1]

const min = getMin(exampleArr)
const mutatedArr = mutateArrValues(exampleArr,min,(v) => 0)

console.log('min = ',min)
console.log('mutatedArr = ',mutatedArr)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。