我试图在一个非常大的数组中找到与条件匹配的前 100 个项目,为了效率,我更愿意在找到这 100 个后结束循环,因为匹配项目的方法很昂贵。
问题是这样做:
const results = largeArray.filter(item => checkItemValidity(item)).slice(0, 100);
Run Code Online (Sandbox Code Playgroud)
在返回前100个之前会在大数组中找到所有结果,这对我来说太浪费了。
这样做:
const results = largeArray.slice(0, 100).filter(item => checkItemValidity(item));
Run Code Online (Sandbox Code Playgroud)
可能返回少于 100 个结果。
请问这样做最有效的方法是什么?
我有一个使用 React (NextJS) 构建的页面,我从 Wordpress 中提取一些标记字符串内容并将其插入到我的 中JSX,如下所示:
...
<div className="wrapper">
<p
className="text-content"
dangerouslySetInnerHTML={{ __html: post.content.rendered }}
></p>
</div>
...
Run Code Online (Sandbox Code Playgroud)
现在,标记可能包含链接,我想在新选项卡上打开所有这些链接。所以我尝试:
...
<div className="wrapper">
<base target="_blank" />
<p
className="text-content"
dangerouslySetInnerHTML={{ __html: post.content.rendered }}
></p>
</div>
...
Run Code Online (Sandbox Code Playgroud)
标记中的所有链接都在新选项卡上打开,太棒了。但问题是页面中的所有其他链接(包括元素外部的链接)div.wrapper都会在新选项卡中打开(因为<base />范围仅限于整个页面),我想防止这种情况发生。
由于我不能<base />在同一页面上使用多个,我知道的另一个选项是循环遍历感兴趣的锚标记并将属性document.querySelector(".wrapper a")添加target到所有标记中,但是在 React 中,这是修改 DOM 的反模式直接地。
所以我不确定如何最好地进行。我该怎么办?
基本上,我想使用 NextJS 路由器来访问页面 url,我这样做:
import { useRouter } from "next/router";
const SomeComp = props => {
const router = useRouter();
}
Run Code Online (Sandbox Code Playgroud)
但是,router具有属性,pathname并且route当我使用console.log()它们时,它们似乎都包含页面的确切“url” 。我查看了 NextJS 文档,但看不到两者之间的区别,以及在使用这两者中的任何一个访问页面 url 时是否应该注意某种问题