我如何在Javascript中立即获得循环和过滤

时间:2019-01-22 05:14:33

标签: javascript loops

    const count = [
        {number: 1},
        {number: 2},
        {number: 3},
        {number: 4},
        {number: 5},
        {number: 6},
        {number: 7},
        {number: 8},
        {number: 9},
        {number: 10},
        {number: 11},
        {number: 12},
        {number: 13},
        {number: 14},
        {number: 15}
        ];
 
 
    for(let i = 0;i < count.length; i++) {

    document.write(count[i].number);
    }

如果我想退出循环的主要数字是5,但是我想写出5之上的一个和5下的一个。那么456。我该如何实现?

4 个答案:

答案 0 :(得分:2)

假设needle是唯一的,您可以.filter所需的数字,然后.forEach进行打印。

const needle = 5
const haystack = [
  {number: 1},
  {number: 2},
  {number: 3},
  {number: 4},
  {number: 5},
  {number: 6},
  {number: 7},
  {number: 8},
  {number: 9},
  {number: 10},
  {number: 11},
  {number: 12},
  {number: 13},
  {number: 14},
  {number: 15}
]

haystack
  .sort((a, b) => a.number - b.number) // skip this if haystack is already sorted.
  .filter(el => [needle - 1, needle, needle + 1].includes(el.number))
  .forEach(el => {
    document.write(el.number)
  })

请注意,您必须注意没有needle = 0的{​​{1}}和没有-1的{​​{1}}。

答案 1 :(得分:2)

为了过滤出所需的数字,您可以使用if语句检查当前对象的编号count[i].number是否是所需的值,然后将其打印出来相关值。

您可以通过更改i的值来访问该对象。使用i-1可以在当前值之前获取元素。同样,使用i+1将转到当前值之后的对象。

最后,您应该检查i的值以确保其位于数组内。例如,如果您选择查找数字1,它没有前对象,那么您需要检查这种情况!

请参见下面的工作示例:

const count = [
        {number: 1},
        {number: 2},
        {number: 3},
        {number: 4},
        {number: 5},
        {number: 6},
        {number: 7},
        {number: 8},
        {number: 9},
        {number: 10},
        {number: 11},
        {number: 12},
        {number: 13},
        {number: 14},
        {number: 15}
        ];
 
const toFind = 5;
for(let i = 0; i < count.length; i++) {
  if(count[i].number == toFind) {
    if(i-1 >= 0) console.log(count[i-1].number);
    console.log(count[i].number);
    if(i+1 < count.length) console.log(count[i+1].number);
    break; // complete loop cycle
  }
}

答案 2 :(得分:1)

        const count = [
      { number: 1 },
      { number: 2 },
      { number: 3 },
      { number: 4 },
      { number: 5 },
      { number: 6 },
      { number: 7 },
      { number: 8 },
      { number: 9 },
      { number: 10 },
      { number: 11 },
      { number: 12 },
      { number: 13 },
      { number: 14 },
      { number: 15 }
    ];
    var index = count.findIndex(item => item.number === 5);
    document.write(count[index - 1].number);
    document.write(count[index].number);
    document.write(count[index + 1].number);

答案 3 :(得分:0)

您可以直接使用forEach,并根据可以写入文档的范围。

const count = [{number: 1},{number: 2},{number: 3},{number: 4},{number: 5},{number: 6},{number: 7},{number: 8},{number: 9},{number: 10},{number: 11},{number: 12},{number: 13},{number: 14},{number: 15}];
        
count.forEach(({number})=> {
  if(number>3 && number<7){
    document.write(number)
  }
})