简体   繁体   English

如何将此类示例 object 数组转换为字符串并将其还原?

[英]How to convert such example object array to string and revert it back?

I have an object array like this我有一个像这样的 object 数组

polyPaths: LatLngLiteral[] = [{lat: 12.994169219614097, lng: 77.62397007054658}
 {lat: 12.984802167360343, lng: 77.67581180638642}
 {lat: 12.957702635784846, lng: 77.65864566869111}
 {lat: 12.974765648082716, lng: 77.61538700169892}];

I want to show this object array as string in textarea我想将此 object 数组显示为textarea中的字符串

(12.994169219614097,77.62397007054658)
(12.984802167360343,77.67581180638642)
(12.957702635784846,77.65864566869111)
(12.974765648082716,77.61538700169892)

On text input change, I want string revert back to object array of polyPaths .在文本输入更改时,我希望字符串恢复为 polyPaths 的polyPaths数组。

I tried with following js example:我尝试了以下js示例:

let stringPath = this.polyPaths.map(path => {
    return '(' + path.lat + ',' + path.lng + ')';
});
var convertedPath = stringPath.join('');
this.polyControls.area.setValue(convertedPath);

But not able to revert it back on input change.但无法在输入更改时将其恢复。

Try the following, it's basic string/array manipulation尝试以下,这是基本的字符串/数组操作

 const polyPaths = [{ lat: 12.994169219614097, lng: 77.62397007054658 }, { lat: 12.984802167360343, lng: 77.67581180638642 }, { lat: 12.957702635784846, lng: 77.65864566869111 }, { lat: 12.974765648082716, lng: 77.61538700169892 }] // converting it to a string const convertedPath = polyPaths.map(path => `(${path.lat},${path.lng})`).join('\n'); console.log(convertedPath) // reversing it back const reversed = convertedPath.split('\n').map(x => { const [lat, lng] = x.slice(1, x.length - 1).split(",").map(Number) return { lat, lng } }) console.log(reversed)

Try like below.尝试如下。 Explanation is in comments.解释在评论中。

 let polyPaths = [{ lat: 12.994169219614097, lng: 77.62397007054658 }, { lat: 12.984802167360343, lng: 77.67581180638642 }, { lat: 12.957702635784846, lng: 77.65864566869111 }, { lat: 12.974765648082716, lng: 77.61538700169892 }]; let stringPath = polyPaths.map(path => { return '(' + path.lat + ',' + path.lng + ')'; }); var convertedPath = stringPath.join(''); console.log(convertedPath); // split your string with ( polyPaths = convertedPath.split('(').filter(path => path.includes(')')) // remove first entry which will be empty string.map(path => ({ lat: path.split(',')[0].trim(), // get lat from each record lng: path.split(',')[1].replace(')', '').trim(), // get lng from each record, remove ) })); console.log(polyPaths);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM