将python代码转换为javascript代码

时间:2015-02-28 18:49:17

标签: javascript

有人可以帮助我的代码,这是用python编写的,我想用javascript写它但我遇到了麻烦,我不知道如何。 python代码

cities={}
for line in open("linnadkaugustega.txt", "r", encoding="UTF-8"):
    m=line.strip().split()
    abim=[word.split(":") for word in m[1:]]
    cities[m[0]]={}

    for couple in abim:
        cities[m[0]][couple[0]]=int(couple[1])

print(cities);

我尝试使用javascript,但是这样做了

function tere(){
    console.log("Tere");
     $.get('read.txt', function(data) {
         cities={};
         var lines = (data.trim()).split();
         abim=[var word.split(":") for word in m[1:]]
         cities[m[0]]={};
         for var couple in abim
             cities[m[0]][couple[0]]=couple[1];
             console.log(cities);
    }, 'text');
}

tere();

有人能帮助我吗?

2 个答案:

答案 0 :(得分:0)

您有从python到js的语法问题。下面是数组如何工作...

如果你在javascript中有一个数组litteral

var cities = [];

然后我们将通过调用push

添加到数组中
cities.push('Portland');
...
cities.push('New York');
然后我们可以通过在数组对象上调用forEach来迭代数组。

cities.forEach(function (city, index){
    //do work on each city
    console.log(city);
});
// Portland
// New York

答案 1 :(得分:0)

一些事情:

    如果没有给出分隔符,
  • .split() in JS会执行与split in python不同的操作。要将一行拆分为单词,您需要明确地拆分空白
  • 您错过了for循环文件的行。 Python使用迭代器语法从文件中读取,在JavaScript中ajax request加载整个文件,您需要自己将它拆分成行。
  • JavaScript没有m[1:]语法,您需要使用.slice() method而不是
  • JavaScript没有数组/列表推导。您需要使用显式循环或map method数组
  • 你的循环语法过于pythonic。在JavaScript中,for loops需要括号和索引变量。

所以这应该做(假设你加载了jQuery库并找到了文件):

$.get('read.txt', function(data) {
    var cities = {};
    var lines = data.split("\n");
    for (var i=0; i<lines.length; i++) {
        var line = lines[i];
        var m = line.trim().split(/\s+/);
        var abim = m.slice(1).map(function(word) {
            return word.split(":");
        });
        var obj = cities[m[0]] = {};
        for (var j=0; j<abim.length; j++) {
            var couple = abim[j];
            obj[couple[0]] = couple[1];
        }
    }
    console.log(cities);
}, 'text');