【问题标题】:Get Key Value pair after String Split字符串拆分后获取键值对
【发布时间】:2021-03-12 17:51:58
【问题描述】:

我在表单中有一个字符串

Key=asdf, num=90, Key=ert, num=20, Key=yged, num=20, Key=kned, num=35

我必须只过滤值为 20 的 Key num 对并将它们存储到一个 Key Value 对中,这样 Key=ert, num=20 将是​​第一条记录,而 Key=yged, num=20 将是​​第二条记录,依此类推.在这种情况下,如何在 JavaScript 中使用 Map 以便始终将第一个值作为键,而将第二个值作为值和表单对。我使用了以下内容:

var dataString = JSON.parse(data).data;
    var arrayVal = new Array();
    arrayVal = dataString.split(', ');
    for(a in arrayVal){
      console.log(arrayVal[a]);
    }

【问题讨论】:

    标签: javascript arrays arraylist split


    【解决方案1】:

    Array.map 可能不是这里工作的最佳工具。 Array.reduce 会是更好的方法。因为你知道你的分隔符是什么(命名空间和等号),你可以在逻辑上把事情分开,这样你就知道每个其他迭代都会给你一个键/值。然后,您可以创建一种机制来跟踪最后一个键是什么,以便将值映射到它。

    const str = 'Key=asdf, num=90, Key=ert, num=20, Key=yged, num=20, Key=kned, num=35';
    const arr = str.split(', ').reduce( (acc, curr) => {
      const entry = curr.split('=');
      const key = entry[0];
      const val = entry[1];
      if (key === 'Key') {
        acc['last_key'] = val
        acc[val] = null;
      } else if (key === 'num') {
        acc[acc['last_key']] = val;
      }
      return acc;
    }, {});
    delete arr.last_key;
    console.log(arr);

    【讨论】:

      【解决方案2】:

      给你。有点丑。

      let result = dataString.split(', ')
                      .map((value, index, array) =>
                          value === 'num=20' && array[index - 1])
                      .filter(x => x);
      console.log(result);
      

      【讨论】:

        【解决方案3】:

        这是我的意见

        const dataString = JSON.parse(data).data;
        const arrayVal = dataString.split(', ');
        const obj = {}; // initialize the object
        
        for (let i = 0; i < arrayVal.length; i += 2) { // Iterating over two elements for the key and value
            const key = arrayVal[i].split('=')[1];
            const value = arrayVal[i + 1].split('=')[1]; 
        
            obj[key] = value;
        }
        
        console.log(obj);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-22
          • 2018-11-06
          • 2015-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多