Конвертировать массив объектов в нижний регистр

1

Массив выглядит следующим образом:

"myTags":
[{
  "type":"one",
  "value":"Testing",
  "note":"Hey"
},{
  "type":"two",
  "value":"Yg5GE",
  "note":"hey2"
}]

Мне нужно преобразовать тип: "одно" значение "Тестирование" в нижний регистр, т.е. Значение = Тестирование должно быть "тестированием". Есть ли способ сделать это, сохраняя ту же структуру?

Примечание: "type":"one","value":"Testing", не всегда могут быть включены в массив. Поэтому я предполагаю, что в этом сценарии мне сначала нужно сделать чек, если они существуют?

Я попробовал.map, однако я не могу получить результат, который я хочу. Любая помощь будет оценена по достоинству.

Идеальная структура:

  "myTags":
  [{
    "type":"one",
    "value":"testing",
    "note":"hey"
  },{
    "type":"two",
    "value":"Yg5GE",
    "note":"hey2"
  }]
  • 3
    «Я пробовал .map, однако я не могу получить желаемый результат», - затем, пожалуйста, добавьте вашу попытку, чтобы мы могли помочь вам понять и решить проблему.
  • 0
    Если структура гибкая (то есть она не всегда одна и та же, и вы хотите изменить все возможные значения), вы можете рассматривать ее как дерево, проходить по ней и изменять значения, когда достигнете листа. Но, не зная, что вы уже пробовали, вы, возможно, уже пробовали это.
Показать ещё 1 комментарий
Теги:
arrays

2 ответа

1

Перейдем к элементам в myTags, проверьте, является ли type "one" и только потом измените содержимое value на нижний регистр (если есть)

var data = {
  "myTags": [{
    "type": "one",
    "value": "Testing",
    "note": "Hey"
  }, {
    "type": "one",
    "note": "Hey"
  }, {
    "type": "two",
    "value": "Yg5GE",
    "note": "hey2"
  }]
};

data.myTags.forEach(function(tag) {
  if (tag.type === "one" && typeof tag.value !== "undefined") {
    tag.value = tag.value.toLowerCase();
  }
});

console.log(data.myTags);

Вы также можете сначала фильтровать содержимое myTags чтобы получить элемент с "type": "one" и только перебирать эти элементы (элементы)

var data = {
  "myTags": [{
    "type": "one",
    "value": "Testing",
    "note": "Hey"
  }, {
    "type": "one",
    "note": "Hey"
  }, {
    "type": "two",
    "value": "Yg5GE",
    "note": "hey2"
  }]
};

data.myTags
    .filter(function(tag) {
      return tag.type === "one";
    })
    .forEach(function(tag) {
      if (typeof tag.value !== "undefined") {
        tag.value = tag.value.toLowerCase();
      }
    });

console.log(data.myTags);
0

Это прекрасно работает

 $(document).ready(function(){

 var objects ={"myTags":

 [{"type":"one","value":"Testing", "note":"Hey"}

 ,{ "type":"two", "value":"Yg5GE", "note":"hey2"}]}; 

  var obj = objects.myTags.map(function(a) { 
  a.value = a.value.toLowerCase();
  return a;

 });
 console.log(obj);
 });

выход:

  {type: "one", value: "testing", note: "Hey"}

  {type: "two", value: "yg5ge", note: "hey2"}

Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню