【问题标题】:Getting a values from an array based on a sequential order根据顺序从数组中获取值
【发布时间】:2021-08-09 04:53:48
【问题描述】:

假设我有一个这样的数组:

var test_array = [0.1, 2.1, 0.7, 5.4, 3.2, 1.6];

我基本上想获取数组中的前 2 个值,将它们放入 2 个单独的变量中,然后继续下一步,如下所示:

var test_array = [0.1, 2.1, 0.7, 5.4, 3.2, 1.6];
test_array.sort();
for (let i=0;i< test_array.length -1; i++) {
   var j = i + 1;
   var pt_one = test_array[i];
   var pt_two = test_array[j];
   console.log("pt_one = " + pt_one);
   console.log("pt_two = " + pt_two);
   
}

有没有更有效的方法来做到这一点?可以用某种方式使用 forEach() 方法吗?

【问题讨论】:

  • forEach 可能会好一点,但不会好很多。您当前的代码很好。
  • 几乎不需要j 变量,只需写test_array[i+1]

标签: javascript arrays loops foreach iterator


【解决方案1】:

它可能不会好多少,但无论如何你的长度是不正确的。我想您可能希望一次看到两个增量:

let test_array = [0.1, 2.1, 0.7, 5.4, 3.2, 1.6, 10, 100], pt_one, pt_two;
test_array.sort((a, b)=>a-b);
for(let i=0,n=1,l=test_array.length; i<l; i+=2,n+=2){
  pt_one = test_array[i]; pt_two = test_array[n];
  console.log('pt_one = '+pt_one); console.log('pt_two = '+pt_two);
}

我注意到你也会遇到这种问题。

【讨论】:

  • 更简洁,但不是我想要的。
【解决方案2】:

你可以用forEach试试这个:

test_array.forEach((n, i, arr) => {
  var [pt_one,pt_two] = test_array.slice((arr.length - i) * -1);
})

【讨论】:

  • 这几乎是完美的,除了最后一次迭代将 pt_one = 100; pt_two = 未定义;
猜你喜欢
  • 2021-12-30
  • 1970-01-01
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
相关资源
最近更新 更多