如何在对象内部分开字符串并将它们推入数组?JavaScript



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

都不同
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

在ReactJ上做到这一点。

使用Object#entries转换为[键,值]对的数组,而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的支持。

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

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);

最新更新