29.10.2016, 22:26
|
Новичок на форуме
|
|
Регистрация: 29.10.2016
Сообщений: 9
|
|
Получение доступа к элементам массива который является свойством объекта
Добрый день! Подскажите пожалуйста как решить следующую проблему:
Есть объект свойствами которого являются одномерные массивы:
var cas_place = {
monitor:[2,3],
router:[1,5]
mfu:[1,3]
};
Необходимо в умножить все целочисленные значения всех элементов всех массивов на одно и тоже число.
|
|
29.10.2016, 22:39
|
Новичок на форуме
|
|
Регистрация: 29.10.2016
Сообщений: 9
|
|
Попытался сделать так, но что-то не работает
|
|
29.10.2016, 22:39
|
Новичок на форуме
|
|
Регистрация: 29.10.2016
Сообщений: 9
|
|
function getQuantity(n,obj){
for ( var key in obj)
{
if (isArray(obj[key]))
for (i=0;i<obj[key].length;i++)
{
alert(obj[key[i]]);
}
}
}
|
|
29.10.2016, 22:44
|
|
Профессор
|
|
Регистрация: 15.07.2015
Сообщений: 511
|
|
var cas_place = {
monitor:[2,3],
router:[1,5],
mfu:[1,3]
};
let factor = 10
for (let key in cas_place) {
if (Array.isArray(cas_place[key])) {
cas_place[key] = cas_place[key].map(n => ~~n === n ? n * factor : n)
}
}
alert(JSON.stringify(cas_place))
Последний раз редактировалось Lemme, 29.10.2016 в 22:46.
|
|
29.10.2016, 22:47
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,585
|
|
black_viper, obj[key[i]] -> obj[key][i]
Lemme, тыб ещё генераторы заюзал, а потом через аглифай прогнал. -_-
__________________
29375, 35
Последний раз редактировалось Aetae, 29.10.2016 в 22:49.
|
|
29.10.2016, 22:49
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
black_viper,
var cas_place = {
monitor:[2,3, 'test', 'red'],
router:[1,5],
mfu:[1,3]
};
function foo(data, num) {
Object.keys(data).forEach(function(key) {
data[key].forEach(function(el,i) {
el == +el && (data[key][i] = el * num)
})
})
};
foo(cas_place, 5)
alert(JSON.stringify(cas_place))
|
|
29.10.2016, 22:50
|
|
Профессор
|
|
Регистрация: 15.07.2015
Сообщений: 511
|
|
Aetae,
Цитата:
|
тыб ещё генераторы заюзал, а потом через аглифай прогнал. -_-
|
кек, вроде ничего сверхъестественного нет)
|
|
29.10.2016, 22:55
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,585
|
|
Lemme, человек очевидно только начал разбираться, судя по ошибке, а ты ему стрелочные функции, let и, что хуже, хаки типа ~~n === n.
Ну и это не говоря о том, что замена массивов на новые мапнутые - не есть гуд в любом случае, мало ли на эти массивы где-то ещё ссылки есть.
рони это тоже касается.
Люди - обсфукаторы прямо, таким только отпугивать новичков от js. Или это и есть ваш хитрый план?))
__________________
29375, 35
Последний раз редактировалось Aetae, 29.10.2016 в 22:58.
|
|
29.10.2016, 23:08
|
|
Профессор
|
|
Регистрация: 15.07.2015
Сообщений: 511
|
|
Цитата:
|
человек очевидно только начал разбираться
|
Aetae, я не видел его ответа, когда писал, возможно es6 был излишним, но в любом случае, люди на данном форуме делятся на 3 типа
1) Те. кто умееют
2) Те, кто задают вопрос и копипастят ответ
3) Те, кто задают вопрос и пытаются разобраться в ответе.
явно, тс не относится к 1му типу, если ко второму, то тут все ясно, если к третьему, то он загуглит хак ~~n и es6 синтаксис.
Цитата:
|
не есть гуд в любом случае, мало ли на эти массивы где-то ещё ссылки есть.
|
Это да, но про новый объект не было ни слова
Цитата:
|
Люди - обсфукаторы прямо, таким только отпугивать новичков от js. Или это и есть ваш хитрый план?))
|
это лол
Последний раз редактировалось Lemme, 29.10.2016 в 23:12.
|
|
29.10.2016, 23:33
|
Новичок на форуме
|
|
Регистрация: 29.10.2016
Сообщений: 9
|
|
Большое спасибо, а как сделать так, чтобы он не только целочисленные значения умножал, есть еще и с запятой.
|
|
|
|