在javascript中创建这种类型的数据结构

时间:2017-08-17 17:57:40

标签: javascript python data-structures

data = [
    ('pale', 'ple', True),
    ('pales', 'pale', True),
    ('pale', 'bale', True),
    ('paleabc', 'pleabc', True),
    ('pale', 'ble', False),
    ('a', 'b', True),
    ('', 'd', True),
    ('d', 'de', True),
    ('pale', 'pale', True),
    ('pale', 'ple', True),
    ('ple', 'pale', True),
    ('pale', 'bale', True),
    ('pale', 'bake', False),
    ('pale', 'pse', False),
    ('ples', 'pales', True),
    ('pale', 'pas', False),
    ('pas', 'pale', False),
    ('pale', 'pkle', True),
    ('pkle', 'pable', False),
    ('pal', 'palks', False),
    ('palks', 'pal', False)
]
def test_one_away(data):
    for [test_s1, test_s2, expected] in data:
       print(test_s1, test_s2)

此数据变量在python中定义。如何在javascript中创建一个类似的数据数组,以便我可以遍历并打印每个项目,如上所示

4 个答案:

答案 0 :(得分:2)

一种非常简单的方法是将Python列表转换为Javascript数组,然后像往常一样在循环中访问它们,或者根据需要将它们的值重新分配给局部变量。还要确保将布尔值转换为小写。以下示例与ES6之前的环境兼容:

var data = [
    ['pale', 'ple', true],
    ['pales', 'pale', true],
    // ...
];

for (var i = 0; i < data.length; ++i)
{
    var row = data[i];
    var test_s1 = row[0];
    var test_s2 = row[1];
    var expected = row[2];
    // ...
}

如果您的目标环境支持ES6,您可以使用以下变体:

const data = [
    ['pale', 'ple', true],
    ['pales', 'pale', true],
    // ...
];

for (let row of data)
{
    let [test_s1, test_s2, expected] = row;
    // ...
}

答案 1 :(得分:1)

您在Javascript中的python代码可能如下所示。

&#13;
&#13;
const data = [
    ['pale', 'ple', true],
    ['pales', 'pale', true],
    ['pale', 'bale', true],
    ['paleabc', 'pleabc', true],
    ['pale', 'ble', false],
    ['a', 'b', true],
    ['', 'd', true],
    ['d', 'de', true],
    ['pale', 'pale', true],
    ['pale', 'ple', true],
    ['ple', 'pale', true],
    ['pale', 'bale', true],
    ['pale', 'bake', false],
    ['pale', 'pse', false],
    ['ples', 'pales', true],
    ['pale', 'pas', false],
    ['pas', 'pale', false],
    ['pale', 'pkle', true],
    ['pkle', 'pable', false],
    ['pal', 'palks', false],
    ['palks', 'pal', false]
]

const printMyData = (data) => {
  data.forEach(arr => {
    console.log(arr[0] + ' ' + arr[1])
  })
}

printMyData(data)
&#13;
&#13;
&#13;

您必须先对实际数据进行一些重组,并确保您的布尔值是小写的。 printMyData是一个函数,它接受这个数据和其中的forEach()数组,记录它的第一个和第二个元素。

答案 2 :(得分:0)

使用Javascript objects

function makeTuple(s1, s2, expected) {
     return {
         s1: s1,
         s2: s2,
         expected: expected
     };
}

var data = [
    makeTuple('pale', 'ple', true),
    makeTuple('pales', 'pale', true),
    ...
];

for (var i = 0; i < data.length; i++) {
    var obj = data[i];
    console.log(obj.s1, obj.s2);
    // console.log(obj.expected);
}

或者你可以简单地使用数组:

var data = [
    ['pale', 'ple', true],
    ['pales', 'pale', true],
    ...
];

for (var i = 0; i < data.length; i++) {
    var obj = data[i];
    console.log(obj[0], obj[1]);
    // console.log(obj[2]);
}

答案 3 :(得分:0)

如果您不想使用密钥,只需创建数组数组:

var data = [['pale', 'ple', true], ['pale', 'ple', true], ['pale', 'ple', true]];