Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从其他数组中的数组中计算特定单词_Javascript_Arrays_Function - Fatal编程技术网

Javascript 从其他数组中的数组中计算特定单词

Javascript 从其他数组中的数组中计算特定单词,javascript,arrays,function,Javascript,Arrays,Function,我试图计算数组B的特定单词出现在数组A中的次数 我尝试了下面的代码,但输出为0。我不明白,为什么它会记录我在函数开始时分配给变量的值,而不运行“for”循环 let A = ['really', 'basically', 'After', 'a','quick', 'popular', 'really', 'Red', 'began', 'very']; let B = ['really', 'very']; let number = () => { let count = 0;

我试图计算数组B的特定单词出现在数组A中的次数

我尝试了下面的代码,但输出为0。我不明白,为什么它会记录我在函数开始时分配给变量的值,而不运行“for”循环

let A = ['really', 'basically', 'After', 'a','quick', 'popular', 'really', 'Red', 'began', 'very'];
let B = ['really', 'very'];

let number = () => {
  let count = 0;
  for (let i=0; i < A.lengths; i++) {
    if (B.includes(A[i])) {
      return count++;
    }
  }
   return console.log(count);
 }

number();
让A=[“真的”、“基本上”、“之后”、“A”、“快速”、“流行”、“真的”、“红色”、“开始”、“非常”];
设B=[‘真的’、‘很’];
让数字=()=>{
让计数=0;
for(设i=0;i
我希望结果应该是3。

您需要

  • length
    作为数组大小的属性
  • 继续循环,不要过早返回
  • 可能返回计数,通过返回
    console.log
    的结果,您将得到
    未定义的
好主意

  • 将两个数组作为函数的参数
  • 采用
    const
    声明/初始化,因为此变量是常量
  • 是使用小的起始字母作为变量
const number=(a,b)=>{
让计数=0;
for(设i=0;i控制台日志(编号(array1,array2))您可以添加另一个for语句来迭代B中的元素,然后检查A at[i]是否等于B at[j]。但可能没有其他答案那么有效

 let A = ['really', 'basically', 'After', 'a', 'quick', 'popular', 'really', 'Red', 'began', 'very'];
 let B = ['really', 'very'];

    let number = () => {
        let count = 0;
        for (let i = 0; i < A.length; i++) {
            for(let j=0; j < B.length; j++){
                if (A[i] == B[j]){
                    count++
                }
            }
        }
        return console.log(count);
    }

    number();
让A=['really'、'basicy'、'After'、'A'、'quick'、'popular'、'really'、'Red'、'begined'、'very'];
设B=[‘真的’、‘很’];
让数字=()=>{
让计数=0;
for(设i=0;i
为什么这样做:
返回计数++

return
用于以给定值中断函数。当你写
返回count++,它返回计数,然后再递增(实际上它不会递增任何值,因为此时您已经超出了函数范围)

return console.log(count)
也不做任何事情-除了代码永远不会到达那里,除非在B处没有找到任何单词,这将从
console.log
返回未定义的返回值

这样做:

let number = () => {
  let count = 0;
  for (let i=0; i < A.length; i++) {
    if (B.includes(A[i])) {
      count++;
    }
  }
   console.log(count);
   return count;
 }
let number=()=>{
让计数=0;
for(设i=0;i
一个衬垫=>
A.过滤器(项目=>B.包括(项目))。长度

1-长度->非长度

2-includes仅检查该数组中是否存在该值,以便返回true或false

3-return语句终止函数的执行

据我所知,你们正在计算A中B元素的出现次数

这是一种方法:

让A=[“真的”、“基本上”、“之后”、“A”、“快速”、“流行”、“真的”、“红色”、“开始”、“非常”];
设B=[‘真的’、‘很’];
让数字=()=>{
让计数=0;
for(设i=0;i数字()您还可以使用更高阶的函数,如and,而不是loop

让A=[“真的”、“基本上”、“之后”、“A”、“快速”、“流行”、“真的”、“红色”、“开始”、“非常”];
设B=[‘真的’、‘很’];
让总计=B.减少(功能(累加器、电流值){
设founds=A.filter(函数(值、索引){
返回值==当前值;
}).长度;
返回累加器+founds;
},0);

控制台日志(总计)
您既不想
返回count++
返回控制台.log(计数)。你想
count++
返回计数
控制台.log(number())
。在循环中,您真的有
A.length
?如果是这样,请删除“s”,使其成为:
A.length
作为旁注,将
B
作为哈希表/对象将大大提高性能,以获得更大的输入。1。他不需要另一个循环,他使用
数组。includes
方法。2.您像他那样返回console.log,使整个函数变得无用……我假设smokedsalmon返回console.log是为了能够查看返回的内容。这就是我保留console.log的原因。此外,我还包括了另一个循环来展示另一种方法。谢谢你投下的票。在其他情况下,我会理解,但是看到他是如何在中间发挥作用的,我不知道他到底是什么意思。这确实会打印计数,但返回值将丢失。您可以预先放置console.log并返回计数,但仍然可以在控制台中看到它。@AritraGhosh,也许吧,但是您的解决方案创建了一个新数组,这对于计数来说是多余的。以及
过滤器
循环。您还可以查看
for
filter
的性能。当然可以。。看一看。。对于一小部分数据来说,短期收益永远不会更好