String Aggregation in sqlite

Быстрый способ сделать это - перебирать свойства и последовательно обращаться к внутренним объектам, вы можете сделать это, используя Array.reduce() или цикл for:

const get = (obj, props) => props.reduce((out, p) => out && out[p] || undefined, obj);

const obj = { a: { b: { c: 5 } } };

console.log(get(obj, ['a', 'b', 'c']));
console.log(get(obj, ['a', 'b', 'c', 'd', 'e']));

Или, вы можете оценить выражение, используя eval(), однако, это, вероятно, самый медленный способ сделать это, Я не рекомендую его :

const get = (obj, props) => {
  try {
    return eval(`obj.${props.join('.')}`);
  } catch {
    return undefined;
  }
}

const obj = { a: { b: { c: 5 } } };

console.log(get(obj, ['a', 'b', 'c']));
console.log(get(obj, ['a', 'b', 'c', 'd', 'e']));

11
задан monmonja 18 August 2010 в 18:16
поделиться

2 ответа

Вы ищете что-то вроде следующего:

select group_concat(animal) from animals;

Это вернет что-то вроде следующего:

dog,cat,rat,mice,mouse

Если вы не хотите использовать запятую в качестве разделителя, вы можете добавить свой собственный разделитель в качестве второго параметр:

select group_concat(animal, '_') from animals;

, который вернет:

dog_cat_rat_mice_mouse
18
ответ дан 3 December 2019 в 06:44
поделиться

Я думаю, что это будет полезно:

group_concat(X)
group_concat(X,Y)

group_concat () функция возвращает строку, которая является конкатенацией всех ненулевых значений X. Если параметр Y присутствует тогда, он используется в качестве разделителя между экземплярами X. Запятая ("") используется в качестве разделителя, если Y опущен. Порядок связанных элементов произволен.

0
ответ дан 3 December 2019 в 06:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: