为了账号安全,请及时绑定邮箱和手机立即绑定

将字符串转换为二维数组

将字符串转换为二维数组

慕田峪4524236 2021-08-20 09:55:12
例如,每当 x 弹出时我都会得到一个字符串 (example = ".|x") 我必须将 true 推入我的数组,每当一个 '.' 弹出我必须将 false 推到我的数组中。我的问题在于,每当“|” 弹出我必须开始一行新的布尔值使其成为二维数组function parse(str) {    let result = [];    let array = [];    for (let char of str){        if (char === "x") {            result.push(true);        } if (char === "."){            result.push(false);        } if (char === "|"){            result.push(array);        }    }    return [result];}this code just returns [[false, [], true]]这是我应该得到的[[假],[真]]
查看完整描述

3 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

  1. 在每个管道上拆分字符串: |

    string.split('|')

  2. 遍历结果数组,其中.map()方法的回调接受每个字符串并将其转换为字符数组。

    string.split('|').map(str => [...[...str] step 3 ])

    外括号和扩展运算符:[... [...str] step 3 ]会将返回的值从step 3转换为数组。内括号和扩展运算符:[...[...str] step 3 ]将字符串拆分为字符。

  3. step 2然后通过 using.flatMap()方法迭代每个字符数组,该方法是.map().flat()方法的组合。在回调中,返回值应作为单独的子数组返回——此外,如果您需要省略返回值,只需传递一个空数组即可。在此回调中,它将每个字符与 a 进行比较'x'并返回[true][false]注意:返回的数组是扁平的)。

    string.split('|').map(str => [...[...str].flatMap(chr => chr === 'x' ? [真] : [假]) ])

// Raw data for a 6x8 table

const data = `........|....xxxx|xxxxxxxx|x.x.x.x.|x..xx..x|.xx..xx.`;


const bool2D = string => string.split('|').map(str => [...[...str].flatMap(chr => chr === 'x' ? [true] : [false])]);


console.log(JSON.stringify(bool2D(data)));


查看完整回答
反对 回复 2021-08-20
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

这段代码可以解决问题


function parse(str) {

    let result = [];

    let array = [];

    for (let char of str){

        if (char === "x") {

            array.push(true);

        } if (char === "."){

            array.push(false);

        } if (char === "|"){

            result.push(array);

            array = []

        }



    }

    result.push(array);

    return result;

}


查看完整回答
反对 回复 2021-08-20
?
慕森卡

TA贡献1806条经验 获得超8个赞

function parse(str) {

    let result = [];

    let array = [];

    for (let char of str){

        if (char === "x") {

            array.push(true);

        } if (char === "."){

            array.push(false);

        } if (char === "|"){

            result.push(array);

            array = []

        }

    }

    return result;

}

这将创建一个新行,以便您可以添加更多 bool 值,如果这是我从您的问题中理解的。


查看完整回答
反对 回复 2021-08-20
  • 3 回答
  • 0 关注
  • 255 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信