У меня есть массив объектов, и у некоторых объектов есть свойство с запятыми.Что я хочу сделать, так это если у этого объекта есть свойство с запятыми, я хочу разделить его на новый объект и рекурсивно скопировать все остальные свойства в новый элемент массива.
Пример: мне нужночтобы преобразовать этот массив объектов:
[ {
prop1: ' text1 , text2 , text3 ',
prop2: 'stuff1',
prop3: 'stuff1',
prop4: 'stuff1',
prop5: 'https://www.stuff1.com' },
{
prop1: ' text1 , text2 , text3 ',
prop2: 'stuff2',
prop3: 'stuff2',
prop4: 'stuff2',
prop5: 'https://www.awefewfew.com' },
]
в это:
[ {
prop1: 'text1',
prop2: 'stuff1',
prop3: 'stuff1',
prop4: 'stuff1',
prop5: 'https://www.stuff1.com' },
{
prop1: 'text2',
prop2: 'stuff1',
prop3: 'stuff1',
prop4: 'stuff1',
prop5: 'https://www.stuff1.com' },
{
prop1: 'text3 ',
prop2: 'stuff1',
prop3: 'stuff1',
prop4: 'stuff1',
prop5: 'https://www.stuff1.com' },
{
prop1: 'text1',
prop2: 'stuff2',
prop3: 'stuff2',
prop4: 'stuff2',
prop5: 'https://www.awefewfew.com' },
{
prop1: 'text2',
prop2: 'stuff2',
prop3: 'stuff2',
prop4: 'stuff2',
prop5: 'https://www.awefewfew.com' },
{
prop1: 'text3',
prop2: 'stuff2',
prop3: 'stuff2',
prop4: 'stuff2',
prop5: 'https://www.awefewfew.com' },
]
Разделив в prop1, затем рекурсивно скопировав все остальные свойства в новый элемент массива.
edit: я смог выяснить это на самом деле в листах Google, но не смог перенести это на vanilla JS:
function splitColumnAndRepeatRows(anArray, splitColumnIndex) {
var output = [];
for (i in anArray){
var splitArray = anArray[i][splitColumnIndex].split(",");
for (j in splitArray){
var row = anArray[i].slice(0);
row[splitColumnIndex] = alltrim(splitArray[j]);
output.push(row);
}
}
return output;
}
function alltrim(str) {
return str.replace(/^\s+|\s+$/g, '');
}