Нужно вывести весь объект в виде строки, но в таком формате, чтобы не было скобок которые автоматически создаются.
Вот объект:
crd = {};
crd[2] = {
x: 100,
y: 100
}
crd[3] = {
x: 200,
y: 200
}
Вывожу:
console.log(JSON.stringify(crd));
Получается:
{"2":{"x":200,"y":200},"3":{"x":100,"y":100}}
Мне нужно чтобы было так:
2 200 200 3 100 100
То есть убрать символы {
, }
, "
, x
, y
и :
, и вывести четкий текст с цифрами. Подскажите, как это сделать? Может быть есть способ лучше?
Нет гарантии в каком порядке будут выведены ключи, то есть x
и y
будут перепутаны в общем случае
я бы сделал так:
crd = {};
crd[2] = {
y: 100,
x: 100
}
crd[3] = {
x: 200,
y: 200
}
console.log(JSON.stringify(crd))
console.log(Object.keys(crd).map(function(k) {
return k + ' ' + crd[k].x + ' ' + crd[k].y
}).join(' '))
Неясно, как решать задачу в общем виде, потому что непонятно, например, чем ключи x/y хуже ключей 2/3.
Поэтому, решим в частном виде.
Предположим, что нужные данные - это числа:
const crd = {};
crd[2] = {
x: 100,
y: 101
}
crd[3] = {
x: 200,
y: 201
}
crd[5] = {
y: 301,
x: 300
}
let result = JSON.stringify(crd)
.split(/\D+/) // Разбиваем строку на числовые элементы
.filter(a=>a) // Отбрасываем пустые элементы(в начале и конце)
.join(' '); // Собираем итоговую строку
console.log(result)
// Предположение, что структура жёстко задана({key: {x, y}})
let res2 = Object.keys(crd)
.reduce((res, key) => {
res.push(key);
['x', 'y'].forEach(k => res.push(crd[key][k]));
return res;
}, [])
.join(' ');
console.log(res2);
.match(/\d+/g)
— ищет совпадения через регулярное выражение и возвращает массив. \d
— одна цифра. А плюсик после него означает "одно или несколько совпадений". Флажок g
- (global), позволяет найти все совпадения, а не остановиться на первом найденном.
А из полученного массива собираем строку через .join()
- поставив один пробел между элементами.
crd = {
2: {x: 100, y: 100},
3: {x: 200, y: 200}
}
console.log( JSON.stringify(crd).match(/\d+/g).join(' ') );
*Если там могут быть и нецелые числа, тогда \d+\.*\d*
— звездочка означает "ноль раз или больше"
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я знаю, что для спойлера есть функцияslideToggle и для добавления в конец
Всем приветЯ юзаю Express, Node, React
Вообще не понимаю, в чём ошибка, но cookie вроде как остаётся совершенно пустым
Почему после увеличения уменьшение зума не корректно пересчитаваются координатыЕсли изначально не зумить, то точки масштабируются корректно,...