在第 7 章机器人项目中,在 Eloquent JavaScript 中,我很难弄清楚机器人项目的开始部分。
const roads = [
"Alice's House-Bob's House", "Alice's House-Cabin",
"Alice's House-Post Office", "Bob's House-Town Hall",
"Daria's House-Ernie's House", "Daria's House-Town Hall",
"Ernie's House-Grete's House", "Grete's House-Farm",
"Grete's House-Shop", "Marketplace-Farm",
"Marketplace-Post Office", "Marketplace-Shop",
"Marketplace-Town Hall", "Shop-Town Hall"
];
function buildGraph(edges) {
let graph = Object.create(null);
function addEdge(from, to) {
if (graph[from] == null) {
graph[from] = [to];
console.log()
} else {
graph[from].push(to);
}
}
for (let [from, to] of edges.map(r => r.split("-"))) {
addEdge(from, to);
addEdge(to, from);
}
return graph;
}
const roadGraph = buildGraph(roads);
console.log(roadGraph)
这是我不明白的地方。这里的这一行引起了我的问题,因为 from、to 周围有括号
for (let [from, to] of edges.map(r => r.split("-")))
当我在 eloquent javascript 沙箱中运行它时,它可以工作,但是当我尝试在 cloud9 IDE 或 Visual Studio Code 中运行它时,它给了我一个数组:
SyntaxError: Unexpected token [
为什么我在 cloud9 IDE 或 VS Code 中收到意外令牌错误?
另外,我不确定我是否明白发生了什么,所以我会写下我认为我从这个项目的早期部分理解的内容;如果可能的话,我希望有人能给我一些关于这个项目如何运作的澄清。
function buildGraph(edges){
}
函数 buildGraph 接受一个目的地数组,使每个目的地成为我们将创建的对象的一个属性,并且每个属性都将包含一个可以从该目的地属性访问的目的地数组。
function buildGraph(edges){
let graph = Object.create(null)
}
这将创建一个具有空原型的对象,称为图。
function buildGraph(edges) {
let graph = Object.create(null);
//Here's Where The Confusion Starts
function addEdge(from, to) {
if (graph[from] == null) {
graph[from] = [to];
} else {
graph[from].push(to);
}
}
创建一个名为 addEdge 的函数,它接受两个参数,我相信这将是目的地。但这里的这一部分,杀了我,老实说,我不明白这里发生了什么。
if (graph[from] == null) {
graph[from] = [to];
} else {
graph[from].push(to);
}
}
有人可以帮忙吗?这是我关于堆栈溢出的第一个问题,所以如果我的问题没有 100% 正确,我深表歉意。但任何帮助都会很棒。