Nano Hash - криптовалюты, майнинг, программирование

Изменить заголовок объекта внутри массива

Массив содержит объекты со свойством title, которое содержит текст в нижнем регистре с _ . Нужно изменить заголовок, разделив '_', и нужно сделать первую букву заглавной после каждого пробела.

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

  const listData = [
        {
            "title": "some_id",
            "dataTypes": "character varying(65535)"
        },
        {
            "title": "some_value",
            "dataTypes": "character varying(65535)"
        }
  ]
  const newData = []
  listData.map(el => newData.push({"title":el.title.toUpperCase().split('_').join(' '),"dataTypes" : el.dataTypes }))
  console.log(newData);

Ожидал :

   const newData = [
        {
            "title": "Some Id",
            "dataTypes": "character varying(65535)"
        },
        {
            "title": "Some Value",
            "dataTypes": "character varying(65535)"
        }
  ]

Действительный :

  const newData = [ 
  { title: 'SOME ID' ,
   dataTypes: 'character varying(65535)' },
  { title: 'SOME VALUE' ,
   dataTypes: 'character varying(65535)' } ]
06.09.2019

Ответы:


1

Ты можешь это сделать:

const listData = [
  {
      "title": "some_id",
      "dataTypes": "character varying(65535)"
  },
  {
      "title": "some_value",
      "dataTypes": "character varying(65535)"
  }
]

const newData = []
listData.map(el => newData.push({
  "title":el.title.split('_').map( word => {
    return word[0].toUpperCase() + word.substring(1, word.length);
  }).join(' '),

  "dataTypes" : el.dataTypes }))
console.log(newData);

Вам придется перебрать разделенный заголовок и обновить первую букву.

Результат:

[ { title: 'Some Id', dataTypes: 'character varying(65535)' },
  { title: 'Some Value', dataTypes: 'character varying(65535)' } ]
06.09.2019
  • Просто и точно :) 06.09.2019

  • 2

    Одним из решений может быть реализация функции Captilization для word следующим образом:

    word => `${word.substring(0,1).toUpperCase()}${ word.substring(1)}`
    

    Это может быть интегрировано с вашим существующим кодом, как показано ниже:

    const listData = [{
        "title": "some_id",
        "dataTypes": "character varying(65535)"
      },
      {
        "title": "some_value",
        "dataTypes": "character varying(65535)"
      }
    ]
    
    const result = listData.map(item => {
      
      return {
        dataTypes : item.dataTypes,
        title : item.title
            .split('_')
            .map(word => `${word.substring(0,1).toUpperCase()}${ word.substring(1)}`)
            .join(' ')
      }
      
    });
    
    console.log(result);

    06.09.2019

    3

    Вы были близки. Есть несколько способов использовать заглавные буквы, и один из способов - использовать регулярное выражение, которое будет использовать только заглавные буквы.

    "will 101skip that".replace(/\b[a-z]/g, match => match.toUpperCase());

    const listData = [
            {
                "title": "some_id",
                "dataTypes": "character varying(65535)"
            },
            {
                "title": "some_value",
                "dataTypes": "character varying(65535)"
            }
      ]
      const newData = []
      listData.map(el => newData.push({"title":el.title.split('_').join(' ').replace(/\b[a-z]/g, match => match.toUpperCase()),"dataTypes" : el.dataTypes }))
      console.log(newData);
    
    06.09.2019

    4

    Вы можете достичь того, что вы ищете с этим ...

    let newData = listData.map(obj => {
        let newObj = {};
        for (let key in obj) {
            key === 'title' ? newObj[key] = [...obj[key].split('_').map(str => str.charAt(0).toUpperCase() + str.slice(1))].join(' ') : newObj[key] = obj[key];
        }
        return newObj;
    });
    

    ... но я бы предпочел разбить этот код на более мелкие куски. Здесь я извлек логику для разделения строки символом подчеркивания и использования заглавных букв в конечном результате в отдельной функции.

    function snakeCaseToCapitalize(snake_case) {
      return [...snake_case.split('_').map(str => str.charAt(0).toUpperCase() + str.slice(1))].join(' ');
    };
    
    let newData = listData.map(obj => {
      let newObj = {};
      for (let key in obj) {
        key === 'title' ? newObj[key] = snakeCaseToCapitalize(obj[key]) : newObj[key] = obj[key];
      }
      return newObj;
    });
    

    Надеюсь, это приведет вас туда, куда вы хотите!

    06.09.2019
  • Этот подход также имеет дополнительное преимущество, поскольку требует знания только ключа, который необходимо изменить. Вместо того, чтобы нажимать каждую клавишу конкретно в новый массив по имени, вы можете просто перебрать все клавиши в объекте и изменить только ключ заголовка. 06.09.2019

  • 5

    Это использует регулярное выражение, чтобы делать то, что вам нужно.

    const listData = [
            {
                "title": "some_id",
                "dataTypes": "character varying(65535)"
            },
            {
                "title": "some_value",
                "dataTypes": "character varying(65535)"
            }
      ]
      const newData = [];
      listData.map(el => newData.push({"title":(el.title.split('_').join(' ').replace(/\b[a-z](?=[a-z]{1})/g, function(letter) {
    return letter.toUpperCase(); } )),"dataTypes" : el.dataTypes }))
      console.log(newData);

    06.09.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..