【问题标题】:How to split strings inside object and push them into array? Javascript如何拆分对象内的字符串并将它们推入数组? Javascript
【发布时间】:2017-12-02 22:57:15
【问题描述】:

我收到一个对象,每次收到不同数量的字符串,每次都不同

Object {
    key_id: 7, 
    key1: "String1, String2", 
    key2: "String1, String2, String3", 
    key3: "String1, String2", 
    key4: "String1, String2";
    …
}

我想收到

Array = [{key_id: 7, key1: "String1", key1: "String2" ...}]

Array = [{key_id: 7, key1: "String1", "String2" ...}]

我需要将这些字符串分开,以便从它们中分离出链接。 我正在使用 JSX/Babel ES6 在 ReactJs 上实现它

【问题讨论】:

  • 你已经尝试了什么?
  • 你想要一个数组中的一个对象,还是多个对象?
  • 一个对象中不能有多个相同的键名。

标签: javascript arrays object ecmascript-6 react-jsx


【解决方案1】:

使用 Object#entries 转换为 [key, value] 对的数组,然后 Array#map 它们:

const data = {
  key_id: 7, 
  key1: "String1, String2", 
  key2: "String1, String2, String3", 
  key3: "String1, String2", 
  key4: "String1, String2"
};

const result = Object.entries(data).map(([key, value]) => ({
  [key]: typeof value === 'string' ? value.split(', ') : value
}));

// an array with multiple objects
console.log(result);

// A single object:
console.log(Object.assign({}, ...result));

请注意,Object#entries 不是 ES6 的一部分,IE 和 Edge 不支持。

【讨论】:

    【解决方案2】:

    编辑:更新了将每个属性更改为数组元素的代码。

    let data = {
      key_id: 7, 
      key1: "String1, String2", 
      key2: "String1, String2, String3", 
      key3: "String1, String2", 
      key4: "String1, String2"
    };
    
    Object.keys(data).forEach(function(key) {
        data[key] = typeof data[key] === 'string' ? data[key].split(', ') : data[key];
    });
    
    console.log(data);

    【讨论】:

      猜你喜欢
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      相关资源
      最近更新 更多