Я хочу объединить объекты на основе свойства, и я хочу использовать это свойство в качестве ключа для объединенного массива. вот мой код:
let mergedProfiles = [];
for (let set of profiles) {
if (Object.keys(mergedProfiles).indexOf(String(set.profile_id)) >= 0) { // if profile id exists
mergedProfiles[set.profile_id].push(set);
} else {
mergedProfiles[set.profile_id] = [];
mergedProfiles[set.profile_id].push(set);
}
}
Пример объекта профиля: {user_id: 17, name: "test", country: "US", bid: 0.02, profile_id: "1", user_id: 12}
слияние работает нормально, но по какой-то причине я не могу понять, что я всегда заканчиваю empty
как свое первое свойство в mergedProfiles
, любую идею, что Imissing?
Вы можете взять объект вместо массива, потому что вы получаете разреженный массив с неиспользуемыми индексами.
var profiles = [{ user_id: 17, name: "test", country: "US", bid: 0.02, profile_id: "1", user_id: 12 }],
mergedProfiles = {},
s;
for (s of profiles) {
if (!mergedProfiles[s.profile_id]) {
mergedProfiles[s.profile_id] = [];
}
mergedProfiles[s.profile_id].push(s);
}
console.log(mergedProfiles);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Вы хотите сохранить результаты в объекте, чтобы вы могли ссылаться по ключу.
const allProfiles = {};
for(let set of profiles) {
if(typeof allProfiles[set.profile_id] === "undefined") {
allProfiles[set.profile_id] = [set];
}
else {
allProfiles[set.profile_id].push(set);
}
}
Причина, по которой ваш первый элемент пуст, заключается в том, что вы объявляете пустой массив JavaScript и затем не инициализируете все элементы.
Если вы делаете что-то вроде
var someArray = [];
someArray[5] = 10;
console.log(someArray); // [empty × 5, 5]
то результатом является разреженный массив, в котором первые 5 элементов (0 - 4) являются пустыми или, другими словами, undefined
. В вашем примере вы делаете то же самое, что и выше, где ваш profile_id является целым числом больше 0.
mergedProfiles
является массивом? Вы, кажется, используете его в качестве справочной таблицы<>
и добавьте минимальный воспроизводимый пример