繁体   English   中英

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

[英]How can i get loop and filter at once in Javascript

  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。我该如何实现呢?

假设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 (没有-1needle = 15 (没有+1

为了过滤出您想要的数字,您可以使用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 } } 

  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); 

您可以直接使用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) } }) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM