gpt4 book ai didi

javascript - 计算数据集中发生的每种类型事件的相关性

转载 作者:行者123 更新时间:2023-12-03 01:06:32 25 4
gpt4 key购买 nike

我重写了 Eloquent javascript代码,将其分解为我自己的理解,与书中的速记形式不同。运行代码后,将我的事件放入空的“let events = 0;”中数组并重新检查“!events.includes(event)”,然后执行“events.push(event)”。我希望将事件推送到我的空数组中,但将日志数据中的事件数组推送到我的空事件中,使其保留所有事件,而不是仅包含每个事件列表的一个数组。

function journalEvents(journal) {
let events = [];
for (i = 0; i < journal.length; i++) {
let entry = journal[i];
for (j = 0; j < journal.length; j++) {
let event = entry.events;
if (!events.includes(event)) {
events.push(event);
}
}
}
return events;
}

console.log(journalEvents(JOURNAL));
// Why am I getting an array in and array instead → [["carrot", "exercise", "weekend"], …]

贝娄是完美运行的 Eloquent 代码,我无法从速记中找到我自己重写的代码之间的区别。有人可以告诉我为什么我的没有整理所有事件而不是将 JOURNAL[i].event 插入我的数组吗?....

function journalEvents(journal) {
let events = [];
for (let entry of journal) {
for (let event of entry.events) {
if (!events.includes(event)) {
events.push(event);
}
}
}
return events;
}

console.log(journalEvents(JOURNAL));
// This is the ectaul expected result (A single array of events) → ["carrot", "exercise", "weekend", "bread", …]

// can someone please break this code down for me line by line?

function journalEvents(journal) {

/* how come this block could use the same name "events" as it is in the
JOURNAL data to set its output collections of arrays and does not affect the
code "JOURNAL[i].events" in the date when it loop through?.
Isn't that variable declaration at the begining of the loop sets the events
in the JOURNAL data to an empty array everytime it runs?*/

let events = [];
for (let entry of journal) {
for (let event of entry.events) {
if (!events.includes(event)) {

/* Why are the events pushed in individually and not in their arrays? */

events.push(event);
}
}
}
return events;
}


console.log(journalEvents(JOURNAL));
// → ["carrot", "exercise", "weekend", "bread", …]

最佳答案

两个脚本之间的区别在于 of 的使用循环中的关键字,这意味着迭代值并忽略键

在循环中,您正在使用 j作为键的指示符,但您不是基于键关联进行推送,而是推送 event 的整个值,你应该推 event[j] ,如下:

if (!events.includes(event[j])) {
events.push(event[j]);
}

这是基于原始 JOURNAL 值的假设数据集,您的示例中未提供该数据集,但是片段底部的注释中有足够的内容可以得出问题所在,其中 JOURNAL可能类似于以下内容(纯粹是有根据的猜测):

[
["carrot", "exercise", "weekend"],
["carrot", "exercise", "weekend"],
// ... etc
]
<小时/>

of运算符是 ES6 specification 的一部分,它的出现是为了用 for ... in 取代常见的传统笨重的迭代方式。 不包含原型(prototype)值,传统上看起来如下所示:

for (i in object)
{
if (object.hasOwnPrototype(i))
{
var.push(i);
}
}

这显然有点笨拙,如 for ... in迭代包括原型(prototype)链的所有键(最常见的是不想迭代原型(prototype)链),以及 foreach传统上性能不佳,因此添加了 for ... of环形。如果您使用for (i=0; i < some_array.length; i++)来模拟这一点,那么您需要使用键 i 显式引用值喜欢 object[i] ,它也仅适用于数组,不适用于与字符串关联键控的对象。 for ... of但适用于两者以及任何其他类似数组的对象,使其更加通用,并且总体上降低了代码的复杂性和冗余。

关于javascript - 计算数据集中发生的每种类型事件的相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52379021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com