Я НЕ ХОЧУ ТОЛЬКО УДАЛИТЬ ДУБЛИРОВАННЫЙ. Я хочу, чтобы объединить дублируется, а затем удалитьКак объединить дублированные элементы в массиве javascript?
это мой тест массив:
var arr = [{
'id': 1,
'text': 'ab'
}, {
'id': 1,
'text': 'cd'
}, {
'id': 2,
'text': 'other'
}, {
'id': 3,
'text': 'afafas'
}, {
'id': 1,
'text': 'test'
}, {
'id': 4,
'text': 'asfasfa'
}];
и результат должен быть таким:
[{
'id': 1,
'text': "[ab] [cd] [test]"
}, {
'id': 2,
'text': 'other'
}, {
'id': 3,
'text': 'afafas'
}, {
'id': 4,
'text': 'asfasfa'
}]
поток следующая> У меня есть элементы, которые могут быть дублированы , если идентификаторы элемента равны другим, я имею в виду, что если идентификатор дублируется, то TEXT fild должен быть объединен в один, а дублированный должен быть удален и должен оставаться уникальным с текстовым полем, например. text: "[text1] [text2] [text3] [text4]" это мой старый вопрос Merge duplicated items in array, но письменные ответы работают только для двух дубликатов.
этот код, что я пытаюсь, но это работает только 2 дубликатов, возможно, я 3 или более дублируют этот код не работает
arr.forEach(function(item, idx){
//Now lets go throug it from the next element
for (var i = idx + 1; i < arr.length; i++) {
//Check if the id matches
if (item.id === arr[i].id) {
//If the text field is already an array just add the element
if (arr[idx].text.constructor === Array) {
arr[idx].text.push('[' + arr[i].text + ']');
}
else { //Create an array if not
arr[idx].text = new Array('[' + arr[idx].text + ']', '[' + arr[i].text + ']');
}
//Delete this duplicate item
arr.splice(i, 1);
}
}
});
Возможный дубликат [Удалить дубликаты из массива JavaScript] (http://stackoverflow.com/questions/9229645/remove-duplicates-from-javascript-array) – Rajesh
Вы только дублировал ваш предыдущий вопрос, не делайте этого. Вместо этого сохраните первоначальный вопрос, добавив подробности, обновив продвижение и предоставив обратную связь. Кроме того, многие ответы там правильные, как отметил @Oxi, попробуйте, прежде чем ожидать «свободного ответа». –
@SebastienDaniel Я отредактировал свой вопрос и добавил свой код, что я пытаюсь –