Нужно вывести весь объект в виде строки, но в таком формате, чтобы не было скобок которые автоматически создаются.
Вот объект:
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* — звездочка означает "ноль раз или больше"
Продвижение своими сайтами как стратегия роста и независимости