Javascript element.count&;数组中的element.value是什么意思?
我找到了一个很好的解决方案来获得数组的最大双值切片。我想在Swift中应用它。然而,我不熟悉JavaScript,我通过谷歌搜索它,但还没有结果 我只是想知道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) {
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})
。