将 JavaScript 字符串解析为 2 个数组

Posted

技术标签:

【中文标题】将 JavaScript 字符串解析为 2 个数组【英文标题】:Parsing JavaScript string into 2 arrays 【发布时间】:2022-01-15 22:23:17 【问题描述】:

您有一个格式如下的字符串:“Applejack=A.J.+Applecar,Lemon+Vodka=AlfieCocktail+ Sunset + SexOnTheBeach”等等。

javascript(使用 .split())中,编写代码来解析这样的字符串(可以是 100000 个字符长),将输入放入 2 个不同的数组(数组键、数组值)中,这样数组就会像以下:

key = [“苹果杰克”,“柠檬+伏特加”]

值 = ["A.J+Applecar","AlfieCocktail+Sunset+SexOnTheBeach"]

【问题讨论】:

你尝试了什么? 【参考方案1】:
key = string.split(',').map(x=>x.split("=")[0])
values = string.split(',').map(x=>x.split("=")[1])

【讨论】:

【参考方案2】:

你可以这样做

var str = "Applejack=A.J.+Applecar,Lemon+Vodka=AlfieCocktail+ Sunset + SexOnTheBeach";
var first = str.split(',');
var keys = [];
var values = [];
for(let i = 0; i < first.length; i++)
  let in_two = first[i].split('=');
  keys.push(in_two[0]);
  values.push(in_two[1]);

console.log(keys);
console.log(values);

【讨论】:

【参考方案3】:

你可以这样做:

let str = "Applejack=A.J.+Applecar,Lemon+Vodka=AlfieCocktail+ Sunset + SexOnTheBeach";
let allValues = str.split(','), keys = [], values = [];
allValues.forEach(value => 
    const [k,v] = value.split('=');
    keys.push(k);
    values.push(v);
)

console.log(keys,values);

【讨论】:

【参考方案4】:

您可以简单地将 ma​​p 与 reduce 一起使用。

const str =
  "Applejack=A.J.+Applecar,Lemon+Vodka=AlfieCocktail+ Sunset + SexOnTheBeach";

const [keys, values] = str
  .split(",")
  .map((item) => item.split("="))
  .reduce(
    (acc, item) => [acc[0].concat(item[0]), acc[1].concat(item[1])],
    [[], []]
  );

console.log(keys, values);

【讨论】:

以上是关于将 JavaScript 字符串解析为 2 个数组的主要内容,如果未能解决你的问题,请参考以下文章

javascript中如何传个数组到后台String [ ] 接收?

将数组拆分为按对象属性分组的 2 个数组 [重复]

华为OD机试 -统计匹配的二元组个数(JavaScript) | 机试题+算法思路+考点+代码解析 2023

Javascript - 在默认解析之前将 EXTRA LARGE 数字转换为 JSON 中的字符串

JavaScript 中 2个数组对比取 相同的元素,代码该怎么写

将 JSON 字符串解析为对象的最简单的 C# 函数是啥? [关闭]