如何解决如果我需要 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 举报,一经查实,本站将立刻删除。