2016-07-26 1 views
-1

Мой текущий объект выглядит следующим образомУникальный объект от вложенного объекта с помощью Javascript

{ 
    "payload": [{ 
     "id": "idval1", 
     "type": [{ 
      "lists": [{ 
       "id": "1234", 
       "value": "One", 
       "ddid": "dd1", 
       "name": "first value" 
      }, 
      { 
       "id": "1235", 
       "value": "Two", 
       "ddid": "dd2", 
       "name": "second value" 
      }] 
     }] 
    }, 
    { 
     "id": "idval2", 
     "type": [{ 
      "lists": [{ 
       "id": "1234", 
       "value": "One", 
       "ddid": "dd1", 
       "name": "first value" 
      }, 
      { 
       "id": "1235", 
       "value": "Two", 
       "ddid": "dd2", 
       "name": "second value" 
      }, 
      { 
       "id": "1236", 
       "value": "Three", 
       "ddid": "dd3", 
       "name": "third value" 
      }] 
     }] 
    }, 
    { 
     "id": "idval3", 
     "type": [{ 
      "lists": [{ 
       "id": "1234", 
       "value": "One", 
       "ddid": "dd1", 
       "name": "first value" 
      }, 
      { 
       "id": "1235", 
       "value": "Two", 
       "ddid": "dd2", 
       "name": "second value" 
      }] 
     }] 
    }, 
    { 
     "id": "idval4", 
     "type": [{ 
      "lists": [{ 
       "id": "1234", 
       "value": "One", 
       "ddid": "dd1", 
       "name": "first value" 
      }, 
      { 
       "id": "1235", 
       "value": "Two", 
       "ddid": "dd2", 
       "name": "second value" 
      }, 
      { 
       "id": "1236", 
       "value": "Three", 
       "ddid": "dd3", 
       "name": "third value" 
      }] 
     }] 
    }, 
    { 
     "id": "idval5", 
     "type": [{ 
      "lists": [{ 
       "id": "1234", 
       "value": "One", 
       "ddid": "dd1", 
       "name": "first value" 
      }, 
      { 
       "id": "1235", 
       "value": "Two", 
       "ddid": "dd2", 
       "name": "second value" 
      }, 
      { 
       "id": "1236", 
       "value": "Three", 
       "ddid": "dd3", 
       "name": "third value" 
      }] 
     }] 
    }, 
    { 
     "id": "idval6", 
     "type": [{ 
      "lists": [{ 
       "id": "1234", 
       "value": "One", 
       "ddid": "dd1", 
       "name": "first value" 
      }, 
      { 
       "id": "1235", 
       "value": "Two", 
       "ddid": "dd2", 
       "name": "second value" 
      }] 
     }] 
    }, 
    { 
     "id": "idval7", 
     "type": [{ 
      "lists": [{ 
       "id": "1234", 
       "value": "One", 
       "ddid": "dd1", 
       "name": "first value" 
      }, 
      { 
       "id": "1235", 
       "value": "Two", 
       "ddid": "dd2", 
       "name": "second value" 
      }, 
      { 
       "id": "1236", 
       "value": "Three", 
       "ddid": "dd3", 
       "name": "third value" 
      }] 
     }] 
    }] 
} 

Ниже объект набор я ожидал от текущего объекта

{ 
    "payload": [{ 
     "id": "idval1,idval3,idval6", 
     "type": [{ 
      "lists": [{ 
       "id": "1234", 
       "value": "One", 
       "ddid": "dd1", 
       "name": "first value" 
      }, 
      { 
       "id": "1235", 
       "value": "Two", 
       "ddid": "dd2", 
       "name": "second value" 
      }] 
     }] 
    }, 
    { 
     "id": "idval2,idval4,idval5,idval7", 
     "type": [{ 
      "lists": [{ 
       "id": "1234", 
       "value": "One", 
       "ddid": "dd1", 
       "name": "first value" 
      }, 
      { 
       "id": "1235", 
       "value": "Two", 
       "ddid": "dd2", 
       "name": "second value" 
      }, 
      { 
       "id": "1236", 
       "value": "Three", 
       "ddid": "dd3", 
       "name": "third value" 
      }] 
     }] 
    }] 
} 

Есть ли способ выполните это с помощью подчеркивания или JavaScript.

Спасибо за вашу помощь заранее.

+2

Вы должны описать то, что уникальность второго набора данных. Прямо сейчас, я должен почти догадаться, чтобы понять, что вы хотите во втором наборе данных. – KevBot

+1

Кроме того, вы сами делали какие-либо попытки? Как бы то ни было, вы просто просите члена сообщества выполнить работу за вас. – George

ответ

0

Используя Lodash, вы можете использовать _.uniqWith, чтобы предоставить пользовательский компаратор для поиска уникальности. Мутирование второго параметра в компараторе позволяет объединить id с.

var obj = {"payload":[{"id":"idval1","type":[{"lists":[{"id":"1234","value":"One","ddid":"dd1","name":"first value"},{"id":"1235","value":"Two","ddid":"dd2","name":"second value"}]}]},{"id":"idval2","type":[{"lists":[{"id":"1234","value":"One","ddid":"dd1","name":"first value"},{"id":"1235","value":"Two","ddid":"dd2","name":"second value"},{"id":"1236","value":"Three","ddid":"dd3","name":"third value"}]}]},{"id":"idval3","type":[{"lists":[{"id":"1234","value":"One","ddid":"dd1","name":"first value"},{"id":"1235","value":"Two","ddid":"dd2","name":"second value"}]}]},{"id":"idval4","type":[{"lists":[{"id":"1234","value":"One","ddid":"dd1","name":"first value"},{"id":"1235","value":"Two","ddid":"dd2","name":"second value"},{"id":"1236","value":"Three","ddid":"dd3","name":"third value"}]}]},{"id":"idval5","type":[{"lists":[{"id":"1234","value":"One","ddid":"dd1","name":"first value"},{"id":"1235","value":"Two","ddid":"dd2","name":"second value"},{"id":"1236","value":"Three","ddid":"dd3","name":"third value"}]}]},{"id":"idval6","type":[{"lists":[{"id":"1234","value":"One","ddid":"dd1","name":"first value"},{"id":"1235","value":"Two","ddid":"dd2","name":"second value"}]}]},{"id":"idval7","type":[{"lists":[{"id":"1234","value":"One","ddid":"dd1","name":"first value"},{"id":"1235","value":"Two","ddid":"dd2","name":"second value"},{"id":"1236","value":"Three","ddid":"dd3","name":"third value"}]}]}]}; 
 

 
obj.payload = _.uniqWith(obj.payload, function(val, accVal) { 
 
    if (_.isEqual(val.type, accVal.type)) { 
 
    accVal.id += "," + val.id; 
 
    return true; 
 
    } 
 
    return false; 
 
}); 
 

 
console.log(obj);
<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>

+0

Привет, Спасибо за помощь. Есть ли способ проверить ** «списки» **, потому что у нас есть другое свойство в типе, называемом ** «ddtype»: «cs» ** «type»: [{«ddtype»: «cs», «lists»: [{«id»: «1234», «value»: «One», «ddid»: «dd1», «name»: «first value»}]}] '. Это свойство имеет разные значения, поэтому мы не можем использовать его с типом. Пожалуйста, посоветуйте мне об этом. – Karthikeyan

+0

Не могли бы вы отредактировать входные данные в вопросе, чтобы показать это? Я не уверен, что понимаю. Это звучит достаточно просто, просто измените, что получилось, сравнивая с '_.isEqual' – 4castle

+0

Спасибо за ваше обновление. У меня есть исправление. :) – Karthikeyan

 Смежные вопросы

  • Нет связанных вопросов^_^