17.01.2017, 16:22
|
|
Интересующийся
|
|
Регистрация: 17.01.2017
Сообщений: 16
|
|
Создание из 2 массивов массив объектов
Здравствуйте, Всем!
Помогите, пожалуйста разобраться. Обыскался уже...
Есть задача объединить два массива в объект массивов.
var positions = [
'Bosh VZHIH-101',
'Ariston WHO-D',
'Atlant Mattel 2016',
'Wirpool FLASH black edition',
'Bosh VH1Z-024'
];
var prices = [
10000,
4800,
9200,
2500,
5700
];
На выходе нужно получить:
[ { name: 'Bosh VZHIH-101', price:10000},
{ name: 'Ariston WHO-D', price:4800},
{ name: 'Atlant Mattel 2016', price:9200 },
{ name: 'Wirpool FLASH black edition', price:9200 },
{ name: 'Bosh VH1Z-024', price:5700} ]
У меня же получается:
[ { name: 'Bosh VZHIH-101' },
{ name: 'Ariston WHO-D' },
{ name: 'Atlant Mattel 2016' },
{ name: 'Wirpool FLASH black edition' },
{ name: 'Bosh VH1Z-024' },
{ price: 10000 },
{ price: 4800 },
{ price: 9200 },
{ price: 2500 },
{ price: 5700 } ]
Мой код:
'use strict';
var positions = [
'Bosh VZHIH-101',
'Ariston WHO-D',
'Atlant Mattel 2016',
'Wirpool FLASH black edition',
'Bosh VH1Z-024'
];
var prices = [
10000,
4800,
9200,
2500,
5700
];
var hits = [];
function createObj(arrayName) {
return arrayName.forEach(function(index){
var hash = {};
if (arrayName == positions){
hash.name = index;
} else {
hash.price = index;
}
hits.push(hash);
});
}
createObj (positions);
createObj (prices);
hits;
Подправьте, пожалуйста.
|
|
17.01.2017, 16:28
|
|
Интересующийся
|
|
Регистрация: 17.01.2017
Сообщений: 16
|
|
И как удалить одну из тем? Их почему-то две образовалось...
|
|
17.01.2017, 16:43
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,202
|
|
Сообщение от RoyalHunt
|
Подправьте, пожалуйста.
|
Проход нужно делать по одному массиву... А вот объект нужно делать сразу используя оба массива...
|
|
17.01.2017, 16:48
|
|
Интересующийся
|
|
Регистрация: 17.01.2017
Сообщений: 16
|
|
Сообщение от ksa
|
Проход нужно делать по одному массиву... А вот объект нужно делать сразу используя оба массива...
|
В таком случае мой выбор перебора не подойдет, на сколько я понимаю. Тут нужен классический for?
|
|
17.01.2017, 17:00
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от RoyalHunt
|
В таком случае мой выбор перебора не подойдет, на сколько я понимаю.
|
callback в forEach среди аргументов имеет индекс текущего элемента массива, по которому можно получить элемент второго массива.
|
|
17.01.2017, 17:05
|
|
Интересующийся
|
|
Регистрация: 17.01.2017
Сообщений: 16
|
|
Сообщение от ksa
|
Проход нужно делать по одному массиву... А вот объект нужно делать сразу используя оба массива...
|
Сообщение от laimas
|
callback в forEach среди аргументов имеет индекс текущего элемента массива, по которому можно получить элемент второго массива.
|
Изменил на:
'use strict';
var positions = [
'Bosh VZHIH-101',
'Ariston WHO-D',
'Atlant Mattel 2016',
'Wirpool FLASH black edition',
'Bosh VH1Z-024'
];
var prices = [
10000,
4800,
9200,
2500,
5700
];
var hits = [];
function createObj(arrayName1, arrayName2) {
return function(){
for (let i = 0; i<arrayName1.length; i++){
var hash = {};
hash.name = arrayName1[i];
hash.price = arrayName2[i];
hits.push(hash);
}
};
}
createObj (positions, prices);
hits;
Но такой вариант вообще работать не хочет.
|
|
17.01.2017, 17:07
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Лучше тогда не forEach(), а map():
var positions = [
'Bosh VZHIH-101',
'Ariston WHO-D',
'Atlant Mattel 2016',
'Wirpool FLASH black edition',
'Bosh VH1Z-024'
],
prices = [
10000,
4800,
9200,
2500,
5700
],
obj = positions.map(function(item, index) {
return {'name' : item, 'price' : prices[index]}
})
console.dir(obj)
|
|
17.01.2017, 17:15
|
|
Интересующийся
|
|
Регистрация: 17.01.2017
Сообщений: 16
|
|
Сообщение от laimas
|
Лучше тогда не forEach(), а map():
var positions = [
'Bosh VZHIH-101',
'Ariston WHO-D',
'Atlant Mattel 2016',
'Wirpool FLASH black edition',
'Bosh VH1Z-024'
],
prices = [
10000,
4800,
9200,
2500,
5700
],
obj = positions.map(function(item, index) {
return {'name' : item, 'price' : prices[index]}
})
console.dir(obj)
|
Красиво! Нечего сказать! Пойду обновлю инфу о map в своей голове.
Спасибо большое!
|
|
|
|