我正在迈出编程的第一步,我从雄辩中解决了这个问题,特别是对于weresquirrel问题。在这里:
function hasEvent(event, entry) {
return entry.events.indexOf(event) != -1;
}
function tableFor(event, journal) {
var table = [0, 0, 0, 0];
for (var i = 0; i < journal.length; i++) {
var entry = journal[i], index = 0;
if (hasEvent(event, entry)) index += 1;
if (entry.squirrel) index += 2;
table[index] += 1;
}
return table;
}
console.log(tableFor("pizza", JOURNAL));
// → [76, 9, 4, 1]
我理解第一个函数hasevent,如果一个条目包含给定的事件,它返回true。
我无法掌握的是tableFor功能。我无法知道函数如何流动以及表如何获得其值。例如对于console.log(tableFor(&#34; pizza&#34;,JOURNAL)); ,我们得到[76,9,4,1]。但是为了上帝的缘故呢?
该书由本书提供,如下所示:
var JOURNAL = [
{"events":["pizza","exercise","weekend"],"squirrel":false},
{"events":["bread","pudding","brushed teeth","weekend","touched
tree"],"squirrel":false},
{"events":["carrot","nachos","brushed
teeth","cycling","weekend"],"squirrel":false},
{"events":["brussel sprouts","ice cream","brushed
teeth","computer","weekend"],"squirrel":false},
{"events":["potatoes","candy","brushed
teeth","exercise","weekend","dentist"],"squirrel":false},
{"events":["brussel sprouts","pudding","brushed
teeth","running","weekend"],"squirrel":false},
{"events":["pizza","brushed teeth","computer","work","touched
tree"],"squirrel":false},
{"events":["bread","beer","brushed
teeth","cycling","work"],"squirrel":false},
{"events":["cauliflower","brushed teeth","work"],"squirrel":false},
{"events":["pizza","brushed teeth","cycling","work"],"squirrel":false},
{"events":["lasagna","nachos","brushed teeth","work"],"squirrel":false},
{"events":["brushed teeth","weekend","touched tree"],"squirrel":false},
{"events":["lettuce","brushed
teeth","television","weekend"],"squirrel":false},
{"events":["spaghetti","brushed teeth","work"],"squirrel":false},
{"events":["brushed teeth","computer","work"],"squirrel":false},
{"events":["lettuce","nachos","brushed teeth","work"],"squirrel":false},
{"events":["carrot","brushed teeth","running","work"],"squirrel":false} ...etc
我理解的是,一个事件作为参数传递,它会查看Jounral中的对象数组,看它是否存在。但计数如何发生?
if (entry.squirrel) index += 2;
为什么这+2?为什么不指数+ = 3;或指数+ = 4; ???
最后为什么表[index] + = 1; ???
例如,第一个循环是这样的,用于: console.log(tableFor(&#34; pizza&#34;,JOURNAL));
//FLOW
i=0;
从日记上面的第一行开始,披萨就出现了。
if (hasEvent(event, entry)) index += 1;
因此索引递增并变为1.it继续:
if (entry.squirrel) index += 2;
squirel是假的,所以索引没有任何反应。如果要找到squirel,为什么它+2 ???
然后 table [index] + = 1 从这一点我无法理解。
有人可以帮我分手吗?这对我的训练非常有帮助。
提前谢谢你。
答案 0 :(得分:2)
package javaapplication20;
public class JavaApplication20 {
public static void main(String[] args)
{
B obj1 = new B("pen",5);
C obj2 = new C(2,10);
obj1.productdetails();
obj2.productcost();
}
}
class A{
int price;
String product;
}
class B extends A
{
int quantity;
int total;
B () {
}
B(int q, int t) {
quantity = q;
total = t;
}
B(String a,int b)
{
product=a;
price=b;
}
void productdetails()
{
System.out.println("The product name is "+product);
System.out.println("The price is "+price);
}
}
class C extends B
{
C(int h,int j) {
quantity = h;
total = j;
}
void productcost()
{
System.out.println("The quantity is "+quantity);
System.out.println("The total cost is "+total);
}
}
数组是符合不同条件的条目数。 Sub GetDataFromClosedBook()
Dim SO As String
Dim Qty As String
Dim ID As String
ID = Worksheets("Sheet1").Cells(1, "O").Value
MsgBox (ID)
'data location & range to copy
SO = "='D:\Excel Software\Shipment Tracking\[7811.xlsx]Shipment - 7811 - Connected Ord'!$A$1:$C$50"
Qty = "='D:\Excel Software\Shipment Tracking\[7811.xlsx]Shipment - 7811 - Connected Ord'!$I$1:$I$50"
'link to worksheet
With ThisWorkbook.Worksheets(1).Range("A1:C50")
.Formula = SO
'convert formula to text
.Value = .Value
End With
With ThisWorkbook.Worksheets(1).Range("E1:E50")
.Formula = Qty
'convert formula to text
.Value = .Value
End With
End Sub
是两个table
均为table[3]
的条目数。 entry.squirrel
是仅hasEvent(event, entry)
为真的计数,table[2]
是仅entry.squirrel
为真的计数,table[1]
是两者都不为真的计数。
所以逻辑是hasEvent(event, entry)
从table[0]
开始。如果index
为真,我们会向其添加0
。如果hasEvent(event, entry)
为真,我们会向其添加1
。结果是如果两者都为真,我们最终会添加entry.squirrel
。如果两者都不是真的,我们就不会添加任何东西,所以它仍然是2
。
然后我们将3
添加到0
以增加该计数器。
答案 1 :(得分:0)
输入 - &gt;事件([beer, bread, brushed teeth, brussel sprouts, candy, carrot, cauliflower, computer, cycling, dentist, exercise, ice cream, lasagna, lettuce, nachos, peanuts, pizza, potatoes, pudding, reading, running, spaghetti, television, touched tree, weekend, work]
之一)。
输出 - &gt;表(1×4)
table[0] -- Number of entries in JOURNAL which does not has given event and squirrel is False.
table[1] -- Number of entries in JOURNAL which has given event and squirrel is False.
table[2] -- Number of entries in JOURNAL which does not has given event and squirrel is True.
table[3] -- Number of entries in JOURNAL which has given event and squirrel is True.
**hasEvent(event, entry) entry.squirrel table[index]**
False False table[0] += 1
True False table[1] += 1
False True table[2] += 1
True True table[3] += 1
答案 2 :(得分:0)
我正在阅读同一本书,我遇到了这个讨论,并认为我也可以做出贡献。我也是初学者,如果我错了,请纠正我。无论如何,这就是我理解的方式:
首先,我们使用两个参数tableFor
调用函数"pizza"
(一个字符串;雅克变成我们必须检查的松鼠的可能原因之一)和JOURNAL
(一个对象;它由以下属性组成:"events"
- 可能的原因 - 和"squirrel"
- Jacques当天是否变成了松鼠)。 JOURNAL
本身是一个由多个对象组成的数组。此外,"events"
属性也是一个数组。
然后将"pizza"
和JOURNAL
两个参数传递给tableFor
参数event
和journal
,现在"pizza"
为{{} 1}}和event
是JOURNAL
。
由于最终结果必须是一个由4个元素组成的数组,所以我们可以稍后计算相关性,我们声明一个变量来存储这个数组:
journal
然后我们必须想办法让数组的值在需要时自行递增:var table = [0, 0, 0, 0];
这意味着我们要循环遍历for (var i = 0; i < journal.length; i++)
的每个元素。 journal
表示我们当前正在i = 0
数组的第一个元素中查找"pizza"
,然后继续前进到第二个元素。第三个等等,直到数组的最后一个元素,因此journal
。
i < journal.length
表示我们获取数组的第n个元素并将其分配给var entry = journal[i], index = 0;
变量,并定义entry
(index
中的当前索引数组)为0.
我们在这里调用另一个函数table
:
hasEvent
这意味着我们将<pre>if (hasEvent(event, entry)) index += 1;
if (entry.squirrel) index += 2;</pre>
<pre>function hasEvent(event, entry) {
return entry.events.indexOf(event) != -1;
}</pre>
(event
)和"pizza"
entry
数组放在journal
数组的第0个元素上,并检查它是否包含关键字"pizza"
。如果它不包含它indexOf
将返回-1,如果它这样做将返回给定元素所在的第一个索引。在我们的第一个案例{"events":["carrot","exercise","weekend"],"squirrel":false}
中,没有"pizza"
,因此indexOf
将返回-1。这一行if (hasEvent(event, entry)) index += 1;
询问hasEvent是否为真(indexOf
是否不等于-1)。在我们的例子中,它等于-1,因此我们不会将{1}加1。这一行index
询问Jacques是否真的变成了松鼠(我们可以看到它是假的),所以我们不会将{2}添加到{{1} }。因此,我们当前使用的索引仍为0.现在我们将其增加1(if (entry.squirrel) index += 2;
),因此在第一个场景中我们得到以下结果[1,0,0,0] 。
在我们的index
数组中也值得一提:
table[index] += 1;
因此,根据每种情况,我们将从索引0移至索引1,2,3或保持在索引0并根据满足的条件将其增加1。 我希望有人认为我的解释/理解很有用。
答案 3 :(得分:0)
我也对以下内容感到困惑:
if (entry.events.includes(event)) index += 1;
if (entry.squirrel) index += 2;
table[index] += 1;
这实际上意味着:如果
(entry.events.includes(event)) index += 1;
=== true
,将1加到索引。在这种情况下,我们可以将其翻译为table[1] += 1
如果下面的情况也是如此,
if (entry.squirrel) index += 2;
然后:
table[3] += 1
table[3]
仅在squirrel
和entry
=== true
if (entry.squirrel) index += 2
增加了2,因为squirrel
中table[2]
为真。
table[index]
实际上只是我们要用作目标的索引。