Size: a a a

JavaScript Noobs — сообщество новичков

2021 May 22

КК

Ксяу Ка in JavaScript Noobs — сообщество новичков
obj2 обьявляется и нигде не учавствует дальше - по факту это ссылка на obj1, т.е случай когда obj1 === obj2, равны ссылки.

при обьявлении obj.x ошибки не будет. здесь сработает чейнинг, т.е что-вроде такого:
1) obj1.x = { n: 2 }
2) obj1 = { n: 2 }
чейнинг (несколько присвоений в цепочке) сработает так, выбирает правое значение от последнего (=) и присваевает его по очереди переменным находящимся слева.

итого имеем obj1 = { n: 2 }, и obj2 = { n: 1, x: { n: 2 } }, так как obj2 был ссылкой на старый obj, ему дописался х
источник

SA

Saqhan Abaev in JavaScript Noobs — сообщество новичков
спасибо
источник

КК

Ксяу Ка in JavaScript Noobs — сообщество новичков
кстати, вы задели интересную особенность поведения присвоения: мы знаем и привыкли, что присвоение ассоциативно справа и логично было предположить, что по цепочке оно пойдет также - справа, но присвоение по цепочке работает иначе
источник

КК

Ксяу Ка in JavaScript Noobs — сообщество новичков
async function getData() {
 const callBatch = (batch) => new Promise((res) => BX24.callBatch(batch, res));
 for (let count = 0; count < 10; count++) {
   let batch = getBatch(prevId);
   const result = await callBath(batch);
   //--operations-of-result
 }
}


не уверена, будет ли это работать, и еще, советую поискать промисицированный метод, а не городить огороды
источник

JS

John Smith in JavaScript Noobs — сообщество новичков
вроде сработало. буду разбираться. спасибо большое
источник

n

nyaf in JavaScript Noobs — сообщество новичков
Но если проверить через Proxy, то видно, что даже при  присвоении по цепочке оно идет справа на лево(если вместо obj1 для теста взять какой то метод. obj1.y к примеру). Странно, что в этом случае оно решает вести себя по другому. По идее должен был выйти обьект с circular reference.

let obj1 = { n: 1 };
const obj2 = obj1;

const trap = new Proxy(obj1, {
 set(target, prop, value) {
   console.log(prop);
   target[prop] = value;
 },
});

trap.x = trap.y = { new: 'new field' };

console.log(obj1);
console.log(obj2);
источник

КК

Ксяу Ка in JavaScript Noobs — сообщество новичков
🤷🏼‍♀ значит я ошиблась, в общем и целом, а это, получается, исключение🤔
источник

КК

Ксяу Ка in JavaScript Noobs — сообщество новичков
где тут профи по спеке? заясните нам
источник

IS

Ilya Sinkin in JavaScript Noobs — сообщество новичков
зачем так делать
источник

k

kentforth in JavaScript Noobs — сообщество новичков
Подскажите пожалуйста. У меня есть массив чисел. Имеется объект с ключами и значениями. Мне нужно создат ьновый массив, который бы по числам из массива содержал  их значения. Пример:

const keys = {
1: 'Mazda',
2: 'Suzuki',
1: 'BMW',
3: 'Toyota'
}

const carsNumbers = [1, 3]

На выходе должен быть такой массив:

['Mazda', 'BMW', 'Toyota']
источник

S

System404 in JavaScript Noobs — сообщество новичков
У тебя keys это не массив, а невалидный объект
источник

k

kentforth in JavaScript Noobs — сообщество новичков
я просто для примера написал, но я не знаю как это сделать, в виде обекта или массива
источник

v

va1 in JavaScript Noobs — сообщество новичков
Object.rntries(keys).flatMap(([key, value]) => carnumbers.include(key) ? value : [])
источник

k

kentforth in JavaScript Noobs — сообщество новичков
спасибо, гляну!
источник

IS

Ilya Sinkin in JavaScript Noobs — сообщество новичков
не сработает
источник

S

System404 in JavaScript Noobs — сообщество новичков
carNumbers.map(key => keys[key])?
источник

v

va1 in JavaScript Noobs — сообщество новичков
А если фолс?
источник

k

kentforth in JavaScript Noobs — сообщество новичков
а ключи с означениями хранить как массив?
источник

IS

Ilya Sinkin in JavaScript Noobs — сообщество новичков
.filter(Boolean)
источник

v

va1 in JavaScript Noobs — сообщество новичков
А тут сразу результат)
источник