Вы можете использовать find
оператор javascript, чтобы получить нужную строку из arrResult
. Измените ваш код, как показано ниже:
for(const key of unique) {
let result = arr.filter(x => {
return x.name === key;
});
var currResult = arrResult.find(x => x.name == key);
output.push({
name: key,
// need to get the rest of the properties here
total: currResult.total,
featured: currResult.featured,
noAnswers: currResult.noAnswers
});
}
Это - высокоуровневый язык, таким образом, что-либо не укусило связанный (побитовые операторы, сдвиг разряда) будет то же.
Целое число может составить 64 бита вместо 32 битов. Существуют некоторые причудливые случаи, где это может вызвать проблемы.
Результаты деления с плавающей точкой будут затронуты увеличением к 64 битам; таким образом, если у Вас есть код, который делает что-то глупое как сравнение результатов деления с плавающей точкой к hardcoded константам, ожидает, что это повредится.
Единственная проблема, с которой вы столкнетесь, - это когда вы полагались на 32-битное двоичное представление данных. В основном потому, что PHP использует целые числа со знаком, вы увидите проблемы с хешированием, генерацией ключей и т.д. при явном преобразовании в int с (int), числа> 2 ^ 32 будут переноситься туда, где они не будут переноситься в 64-битную среду если, конечно, они не> 2 ^ 64.
Пример 4 vs 8:
Проблемы с десятичным значением:
0010 >> 1 = 0001 [ 1 dec ]
0000 0010 >> 1 = 0000 0001 [ 1 dec ]
Они оба дают одинаковый результат (в десятичном смысле), однако:
0100 << 1 = 1000 [ -8 dec ]
0000 0100 << 1 = 0000 1000 [ 16 dec ]
Проблемы с переносом:
1000 << 1 = 0000 [ 0 dec ]
0000 1000 << 1 = 0001 0000 [ 32 dec ]
Все операции с целыми числами и числами с плавающей запятой будут обрабатываться как 64-битные значения, поэтому, если ваш конечный результат зависит от 32-битных фрагментов, вам придется их компенсировать.
манипуляции с битами требуют особой осторожности для обеспечения переносимости между системами / архитектурами.
В C операции << и >> можно сделать переносимыми с помощью беззнаковых переменных, который удаляет правила дополнения единиц / двоек для отрицательных чисел.
Как правило, не используйте маски фиксированной длины для манипуляций с битами (например, & и |). Это зависит от архитектуры.
Например. Сброс последних 4 бит: маска 0xF0 будет работать на 8-битном архитектура, но не 16 бит. Результаты будут другими (16-битные могут иметь другие установленные биты, не включенные в маску).
Чтобы решить эту проблему, используйте оператор ~. Маска ~ 0xF эквивалентна 0xF0, но будет работать на любой архитектуре . Все биты, кроме последних 4, будут сброшены