删除对象中所有“ true”和“ false”周围的引号

时间:2020-03-09 23:02:36

标签: javascript json regex loops

  fetch("./files.json")
        .then(response => response.json())
        .then((users) => {
            var files = users.find(x => typeof x[username] !== "undefined");
            console.log(JSON.stringify(files);
            files = files.replace(/:[ ]*"false"/,':false' ).replace( /'/g,'"');

        })

在上面,我只是尝试替换我周围所有带有引号的"true""false",以使它们不带引号 ie true {{1} }。

以上错误false,我也尝试过replace is not a function,并且无法在map上设置。在进行这些尝试之前,可以使用undefined errorusers控制台。可以在这里执行此操作吗?

响应数据经过files后如下所示:

JSON.stringify

更新:首先将userMoves: [{id: "slz1", checked: "false"}, {id: "slz2", checked: "false"}, {id: "slz3", checked: "false"},…] 转换为字符串将更新第一个找到的files,但不是全部。

false

3 个答案:

答案 0 :(得分:1)

不需要正则表达式或字符串化。

首先,我们将遍历数组userMoves中的对象数组,然后使用严格检查在1处进行检查。)该值是true,而2是字符串,然后分别分配true和false

fetch("./files.json")
.then(response => response.json())
.then((users) => {
    let files = users.find(x => typeof x[username] !== "undefined");
    for ( let file in files.userMoves ){
        if ( files[ file ].checked === "true" ) { 
            files[ file ][ 'checked' ] = true;
        }else if ( files[ file ].checked === "false" ){
            files[ file ][ 'checked' ] = false;
        }
    }
})

答案 1 :(得分:1)

如果在第一个正则表达式中添加d1 = datetime(2011, 3, 1, 1, 1, 1, 1000) d2 = datetime(2011, 4, 1, 1, 1, 1, 2500) print(get_duration(d1, d2, 'y', True)) # => (0.0, 2678400.0015) print(get_duration(d1, d2, 'm', True)) # => (1.0, 50397.12149999989) print(get_duration(d1, d2, 'w', True)) # => (4.0, 259200.00149999978) print(get_duration(d1, d2, 'd', True)) # => (31.0, 0.0014999997802078724) print(get_duration(d1, d2, 'h', True)) # => (744.0, 0.0014999997802078724) print(get_duration(d1, d2, 'min', True)) # => (44640.0, 0.0014999997802078724) print(get_duration(d1, d2, 's', True)) # => (2678400.0, 0.0014999997802078724) print(get_duration(d1, d2, 'mil', True)) # => (2678400001.0, 0.0004999997244524721) print(get_duration(d1, d2, 'y', False)) # => 0.08493150689687975 print(get_duration(d1, d2, 'm', False)) # => 1.019176965856293 print(get_duration(d1, d2, 'w', False)) # => 4.428571431051587 print(get_duration(d1, d2, 'd', False)) # => 31.00000001736111 print(get_duration(d1, d2, 'h', False)) # => 744.0000004166666 print(get_duration(d1, d2, 'min', False)) # => 44640.000024999994 print(get_duration(d1, d2, 's', False)) # => 2678400.0015 print(get_duration(d1, d2, 'mil', False)) # => 2678400001.4999995 标志,则您的原始方法应该可以使用。第二个g是多余的。我修改了第一个正则表达式,使其也可以处理replace()值:

"true"

答案 2 :(得分:1)

使用Array.map将每个对象更改为其布尔值。

const data = {
  userMoves: [{
    id: "slz1",
    checked: "false"
  }, {
    id: "slz2",
    checked: "true"
  }, {
    id: "slz3",
    checked: "false"
  }]
};

function convertToBoolean(input) {
  return {
    userMoves: input.userMoves.map(item => ({ ...item,
      checked: item.checked === 'true'
    }))
  };
}

console.log(convertToBoolean(data));