如何转换数组中的字符串?

时间:2020-10-15 12:37:32

标签: javascript arrays typescript

从http响应中,我收到了这样的对象:

{"[3, company1]":["role_user"], "[4, company2]":["role_admin"] }

键是一个数组...在打字稿中是否有转换键的方法

"[3, company1]" 

在这样的数组中

 [3, "company1"]

4 个答案:

答案 0 :(得分:0)

您可以将Object.keys与map结合在一起,并使用split将字符串转换为数组

let data = {"[3, company1]":["role_user"], "[4, company2]":["role_admin"] }

let keys = Object.keys(data)
  .map(
    el => 
        el.replace('[', '')
        .replace(']', '')
        .split(',')
        .map(el => el.trim())
        .map(el => isNaN(parseFloat(el))
            ? el
            : parseFloat(el))
    )

console.log("Keys: ", keys)

这是小提琴: https://jsfiddle.net/to38g6cb/1/

答案 1 :(得分:0)

您要将密钥转换为什么?

如果要将其转换为普通数组,则应执行以下操作。

const httpResponse = {
  "[3, company1]": ["role_user"],
  "[4, company2]": ["role_admin"]
};

const convertedKeys = Object.keys(httpResponse).map(value => {
  let keyArray = value.replace("[", "").replace("]", "").split(", ");
  return [parseInt(keyArray[0]), keyArray[1]];
});

console.log(convertedKeys);

如果以上都不是您想要的,请再次改写您的问题。

答案 2 :(得分:0)

您可以使用// header.component.jsx const mapStateToProps = state => ({ // react-redux passes here the whole redux store to the argument state /* you want access currentUser of user reducer, so you just access it the same way as you would do it in javascript object, with use of dots. */ currentUser: state.user.currentUser // }); export default connect(mapStateToProps)(Header); 处的字符串// whenever in your component code console.log(this.props.currentUser); slice(1,-1)删除第一个和最后一个字符(逗号在两侧带有可选空格)。

然后将第一部分转换为数字并返回数组

split

答案 3 :(得分:0)

如果已经引述company1部分会更容易,那么您就可以使用JSON.parse。实际上,让我们开始吧!通过搜索和替换在company1部分加引号。

let key = `[3, company1]`;
let obj = JSON.parse(key.replace(/[$A-Z_]\w*/gi, '"$&"'))
console.log(obj);

注意:我正在猜测哪些字符可能是有效的,并且带有看起来像JavaScript标识符的模糊字符。 [$A-Z_]\w*由于反序列化的歧义性,显然不是逗号和右方括号。

相关问题