【问题标题】:How to convert array data to object in react js?reactjs中如何将数组数据转换为对象?
【发布时间】:2019-12-23 08:28:38
【问题描述】:

我想转换下面的数据

[[size:'l',color:'red'],[size:'xl',color:'blue']]

[{size:'l',color:'red'},{size:'xl',color:'blue'}]

在反应js中

请帮我解决它。提前谢谢你

【问题讨论】:

  • 转换成无效的js?没有这样的语法。
  • 首先,Javascript 中的数组内部没有 [a:1, b:2] 这样的东西。你甚至可以在这里提问之前先得到例外。其次,这与 ReactJs 无关。这更多的是关于纯 JavaScript。有关数组的更多了解,请参见此处 - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • 你的意思是第一个数据[[size:'l',color:'red'],[size:'xl',color:'blue']]是字符串类型的吗?

标签: arrays reactjs


【解决方案1】:

首先,你的数据是一个无效的js结构, 如果您使用最后一个无效数据作为字符串,那么首先所有键和值都应该是字符串,应用替换您可以通过使用下面的 sn-p 来达到该结果

(用大括号去掉括号,除了第一个和最后一个)

let arrayString = '[["size":"l","color":"red"],["size":"xl","color":"blue"]]';

let regexLeft  = /(?!^)(\[)(?!$)/g;
let regexRight = /(?!^)(\])(?!$)/g;
let newArray = arrayString.replace( regexLeft, '{' );
newArray = newArray.replace( regexRight, '}' );
let object = JSON.parse(newArray);

console.log(object);

【讨论】:

    【解决方案2】:

    请看下面:

    const arrayToObject = (array, key) => {
      const defaultValue = {};
      return array.reduce((obj, item) => {
        return {
          ...obj,
          [item[key]]: item,
        };
      }, defaultValue);
    };
    
    console.log('Data: ', arrayToObject);

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-13
      相关资源
      最近更新 更多