Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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 element.count&;数组中的element.value是什么意思?_Javascript_Algorithm - Fatal编程技术网

Javascript element.count&;数组中的element.value是什么意思?

Javascript element.count&;数组中的element.value是什么意思?,javascript,algorithm,Javascript,Algorithm,我找到了一个很好的解决方案来获得数组的最大双值切片。我想在Swift中应用它。然而,我不熟悉JavaScript,我通过谷歌搜索它,但还没有结果 我只是想知道last.count&last.value在下面的代码中是什么意思。他们最后对元素做了什么 function getLongestSlice(array) { var count = 0, max = 0, temp = []; array.forEach(function (a) {

我找到了一个很好的解决方案来获得数组的最大双值切片。我想在Swift中应用它。然而,我不熟悉JavaScript,我通过谷歌搜索它,但还没有结果

我只是想知道
last.count
&
last.value
在下面的代码中是什么意思。他们最后对元素做了什么

function getLongestSlice(array) {
    var count = 0,
        max = 0,
        temp = [];

    array.forEach(function (a) {
        var last = temp[temp.length - 1];

        if (temp.length < 2 || temp[0].value === a || temp[1].value === a) {
            ++count;
        } else {
            count = last.count + 1;
        }
        if (last && last.value === a) {
            last.count++;
        } else {
            temp.push({ value: a, count: 1 });
            temp = temp.slice(-2);
        }
        if (count > max) {
            max = count;
        }
    });
    return max;
}

console.log(getLongestSlice([58, 800, 0, 0, 0, 356, 8988, 1, 1]));        //  4
console.log(getLongestSlice([58, 800, 0, 0, 0, 356, 356, 8988, 1, 1]));   //  5
console.log(getLongestSlice([1, 1, 1, 2, 2, 2, 1, 1, 2, 2, 6, 2, 1, 8])); // 10
函数getLongestSlice(数组){ 变量计数=0, 最大值=0, 温度=[]; array.forEach(函数(a){ var last=温度[温度长度-1]; 如果(temp.length<2 | | temp[0]。值===a | | temp[1]。值===a){ ++计数; }否则{ count=last.count+1; } if(last&&last.value==a){ 最后,count++; }否则{ 临时推送({value:a,count:1}); 温度=温度片(-2); } 如果(计数>最大值){ 最大值=计数; } }); 返回最大值; } log(getLongestSlice([58800,0,0,03568988,1,1]);//4. log(getLongestSlice([58800,0,0,03565888,1,1]);//5. log(getLongestSlice([1,1,1,2,2,1,1,1,2,2,6,2,1,8]);//10 更新: 谢谢。现在它正在Swift中工作

import Foundation

struct Tmp {
    var value: Int
    var count: Int
}

func getLongestSlice(A: [Int]) -> Int {
    var count = 0,
        max = 0,
        temp: [Tmp] = []

    var last: Tmp = Tmp(value: 0, count: 0)

    for a in A {

        if temp.count != 0 {
            last = temp[temp.count - 1]
        }

        print("last: \(last)")

        if temp.count < 2 || temp[0].value == a || temp[1].value == a {
            count += 1
        } else {
            count = last.count + 1
        }

        if last.value == a {
            last.count += 1
            // assign last.count to last element's count of temp array
            temp[temp.count - 1].count = last.count
        } else {
            temp.append(Tmp(value: a, count: 1))
            temp = Array(temp.suffix(2))
        }

        if count > max {
            max = count
        }
     }
    return max
}

getLongestSlice(A: [58, 800, 0, 0, 0, 356, 8988, 1, 1]) // return 4
getLongestSlice(A: [58, 800, 0, 0, 0, 356, 356, 8988, 1, 1]) // return 5
getLongestSlice(A: [1, 1, 1, 2, 2, 2, 1, 1, 2, 2, 6, 2, 1, 8]) // return 10
getLongestSlice(A: [777]) // return 1
getLongestSlice(A: []) // return 0
<代码>导入基础 结构Tmp{ var值:Int 变量计数:Int } func getLongestSlice(A:[Int])->Int{ 变量计数=0, 最大值=0, 温度:[Tmp]=[] var last:Tmp=Tmp(值:0,计数:0) 在一个小时内{ 如果临时计数!=0{ 最后一次=温度[温度计数-1] } 打印(“最后:\(最后)”) 如果temp.count<2 | | temp[0]。值==a | | temp[1]。值==a{ 计数+=1 }否则{ 计数=最后一次。计数+1 } 如果last.value==a{ last.count+=1 //将last.count分配给临时数组的最后一个元素的计数 temp[temp.count-1]。count=last.count }否则{ 临时追加(Tmp(值:a,计数:1)) 温度=数组(温度后缀(2)) } 如果计数>最大值{ 最大值=计数 } } 返回最大值 } getLongestSlice(A:[58800,0,0,03568988,1,1])//返回4 getLongestSlice(A:[58800,0,0,03563568988,1,1])//返回5 getLongestSlice(A:[1,1,1,2,2,1,1,2,2,6,2,1,8])//返回10 getLongestSlice(A:[777])//返回1 getLongestSlice(A:[])//返回0
从线程:

数组中的
temp
包含以下形状的对象:

{ count: ..., value: ... }
因此,
last
引用该数组的最后一个元素,而
count
value
是该元素的属性


这与JavaScript无关。

好的,你能告诉我
count
属性在这里做什么吗,是指元素
last
的索引吗
count
属性是在以下行中创建的对象的属性:
temp.push({value:a,count:1})它的意思是一个算法问题,而不是JS相关的问题。哦,我明白了!数组
temp
这里存储了一些对象,如
[{value:a,count:1},{value:b,count:5}]
。在我认为它是一个Int数组之前。因此,计数可能意味着数组中
value
的出现时间。在本例中,
last
是一个对象。因此,
value
count
是它的参数,用点符号调用谢谢!我现在明白了,这行
temp.push({value:a,count:1})