Помогите преобразовать массив 
		
		
		
		Помогите пожалуйста собрать массив, сломал уже всю голову. Опыта пока немного. 
	Есть 2 массива с объектами: 
let allData = [
  { idStandard: 1278, valueDecNew: 8 },
  { idStandard: 1279, valueDecNew: 3 },
  { idStandard: 1280, valueDecNew: 6 },
  { idStandard: 1284, valueDecNew: 56 }
 ] 
let params = [
  { idStandard: 1278, valueDecNew: 0 },
  { idStandard: 1279, valueDecNew: 0 },
  { idStandard: 1282, valueDecNew: 0 }
]
Необходимо добавить в массив allData значения массива params, но если в allData и params есть объекты c одинаковыми idStandard, то в результат нужно брать только объект из params В итоге должен получится массив: 
let result = [
  { idStandard: 1278, valueDecNew: 0 },
  { idStandard: 1279, valueDecNew: 0 },
  { idStandard: 1280, valueDecNew: 6 },
  { idStandard: 1284, valueDecNew: 56 },
  { idStandard: 1282, valueDecNew: 0 }
]
 | 
	
		
 Вроде решил сам... 
	Правда в ie приходится использовать полифилы для Object.values и findIndex 
let rawData = params.concat(allData)
let result = Object.values(rawData.reduce(function(acc, n) {
    const i = acc.findIndex(m => n.idStandard === m.idStandard);
  if (!~i || !acc[i].valueDecNew === 0) {
    acc.push(n);    
  }
  return acc;
}, [])
)
console.log(result);
 | 
	
		
 Яб использовал lodash - всё равно он везде есть: 
	unionBy(params, allData, 'idStandard')  | 
	
		
 Без полифилов и покороче 
	
let allData = [
  { idStandard: 1278, valueDecNew: 8 },
  { idStandard: 1279, valueDecNew: 3 },
  { idStandard: 1280, valueDecNew: 6 },
  { idStandard: 1284, valueDecNew: 56 }
 ]
 
let params = [
  { idStandard: 1278, valueDecNew: 0 },
  { idStandard: 1279, valueDecNew: 0 },
  { idStandard: 1282, valueDecNew: 0 }
]
let result = params.concat(allData.filter (function (x) {
    return ! params.some (function (y) {return x.idStandard === y.idStandard})
}))
console.log(result)
 | 
	
		
 :) :write:  
	
<pre>
    <script>
        let allData = [{
                idStandard: 1278,
                valueDecNew: 8
            },
            {
                idStandard: 1279,
                valueDecNew: 3
            },
            {
                idStandard: 1280,
                valueDecNew: 6
            },
            {
                idStandard: 1284,
                valueDecNew: 56
            }
        ]
        let params = [{
                idStandard: 1278,
                valueDecNew: 0
            },
            {
                idStandard: 1279,
                valueDecNew: 0
            },
            {
                idStandard: 1282,
                valueDecNew: 0
            }
        ]
        let arr = params.map(function(x) {
            return x.idStandard
        });
        let allfilter = allData.filter(function(x) {
            return arr.indexOf(x.idStandard) === -1
        })
        let result = params.concat(allfilter).sort(function(a, b) {
    return a.idStandard - b.idStandard
})
        document.write(JSON.stringify(result, "", 1))
    </script> </pre>
 | 
	
		
 KingdaKa, ну чтука очень популярная поддерживаемая сообществом, так что код там должен быть приличным. 
	Но я стараюсь не смотреть в код библиотечных функций чтоб не расстраиваться. Пока работает и не является узким местом, само собой.)  | 
	
		
 В этой миллион раз решавшейся на форумах задаче вопрос только один: каковы размеры массивов. Если небольшие, то можно не заморачиваться и сделать вложенный цикл О(N^2). Иначе - использовать Map. В лодаше наверняка через Map сделано, или как-то аналогично, т.е. с хорошей асимптотикой. 
	 | 
| Часовой пояс GMT +3, время: 02:39. |