Как мы можем удалить повторяющееся дочернее значение из массива объекта

te = [ { «Имя»: «Бала», "phone": "Нет" }, { «Имя»: «Бала», "phone": "Нет" }, { «Имя»: «Бала», "phone": "Нет" }, { «Имя»: «Бала», "phone": "Нет" } ]

У меня есть повторяющееся значение = "1400-SEND-MAP1", которое я хочу удалить.

shashi keshari 26.10.2018 06:49

вам сначала нужно переформатировать код, чтобы другие люди могли его читать.

He Wang 26.10.2018 06:50

откуда, вы получаете это с php? если да, то можете добавить проверьте их помощь. больше помогите therichpost ..

Ajay Malhotra 26.10.2018 06:51

Что именно вы пытаетесь сделать?

kellymandem 26.10.2018 06:52

Я пытаюсь удалить "значение": "1400-SEND-MAP1", которое повторяется в приведенном выше JSON.

shashi keshari 26.10.2018 07:19
2
5
338
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предполагаю, что вы просто хотите пройти по структуре и найти дубликаты на разных уровнях. Это не лучшее решение, но оно работает: проверьте каждую запись / узел в JSON

  • Просмотрите все объекты / узлы, проверьте, есть ли у них поле "значение"

    • Если это уникальный объект / узел, нажмите на массив, чтобы отслеживать уникальные ключи.

    • Если это не уникальный ключ, продолжайте обход, но в пути назад удалите это.

Похоже, что функция delete помещает нули в удаленный объект / узел. после функции я конвертирую JSON в строку, затем удаляю все "nulls," и ",nulls,"

let json = yourJson;
let uniqueValues = [];
let jsonWithoutDuplicates = removeDuplicates(x);
jsonWithoutDuplicates = JSON.stringify(jsonWithoutDuplicates)
  .replace(/null,/g,'')
  .replace(/,null,/g,',');
console.log(jsonWithoutDuplicates) // you can convert it back to json if you want


function removeDuplicates(json) {
  for (var i in json) {
    if (json[i] !== null && typeof(json[i]) === "object") {
      let objValue = json[i].value;

      if(objValue){
        if(uniqueValues.indexOf(objValue) === -1){
          uniqueValues.push(objValue);
          removeDuplicates(json[i]);
        }else{
          removeDuplicates(json[i]);
          delete json[i]
        }
      }else{
        removeDuplicates(json[i]);
      }
    }
  }
  return json;
}

Кодовое обозначение: https://playcode.io/141053код.

Спасибо. За решение, приведенное выше, удаляются дубликаты с того же уровня, а не со следующего или предыдущего уровня.

shashi keshari 29.10.2018 07:55

Другие вопросы по теме