gpt4 book ai didi

javascript - 如何在 Javascript 中读取、编辑旧数组并保存新数组?

转载 作者:行者123 更新时间:2023-11-29 23:27:34 25 4
gpt4 key购买 nike

我有一个小问题请帮助我。我在 JSFiddle 中有一个简单的脚本。更具体地说,首先我有一个文本文件,其中包含坐标和每对坐标的 id。此文本文件显示在此处:

{
"displayFieldName": "",
"fieldAliases": {
"FID": "FID",
"Id": "Id",
"Longtitude": "Longtitude",
"Latitude": "Latitude"
},
"geometryType": "esriGeometryPoint",
"spatialReference": {
"wkid": 4326,
"latestWkid": 4326
},
"fields": [{
"name": "FID",
"type": "esriFieldTypeOID",
"alias": "FID"
}, {
"name": "Id",
"type": "esriFieldTypeInteger",
"alias": "Id"
}, {
"name": "Longtitude",
"type": "esriFieldTypeDouble",
"alias": "Longtitude"
}, {
"name": "Latitude",
"type": "esriFieldTypeDouble",
"alias": "Latitude"
}],
"features": [{
"attributes": {
"FID": 0,
"Id": 1,
"Longtitude": 23.739000000000001,
"Latitude": 37.972000000000001
},
"geometry": {
"x": 23.739000000000001,
"y": 37.972000000000001
}
}, {
"attributes": {
"FID": 1,
"Id": 2,
"Longtitude": 23.760100000000001,
"Latitude": 37.984999999999999
},
"geometry": {
"x": 23.760100000000001,
"y": 37.984999999999999
}
}, {
"attributes": {
"FID": 2,
"Id": 3,
"Longtitude": 23.749199999999998,
"Latitude": 37.975999999999999
},
"geometry": {
"x": 23.749199999999998,
"y": 37.975999999999999
}
}, {
"attributes": {
"FID": 3,
"Id": 4,
"Longtitude": 23.735700000000001,
"Latitude": 37.975999999999999
},
"geometry": {
"x": 23.735700000000001,
"y": 37.975999999999999
}
}]
}

此文本文件由一个小脚本(在 JSFiddle 中)读取,最终保存在数组“文本”中:

<input type='file' accept='text/plain' onchange='openFile(event)'><br>
<img id='output'>
<script>
var openFile = function(event) {
var input = event.target;

var reader = new FileReader();
reader.onload = function(){
var text = reader.result;
console.log(reader.result.substring(0, 200));
console.log(text);
};
reader.readAsText(input.files[0]);
};

</script>

我的问题是:我想为每一对坐标添加一个新列 z。此列将按如下方式计算:z=Longtitude+Latitude(longlat 是文本中存在的变量)。所以基本上,我想在数组“文本”中重复,我可以在其中计算一个新列并保留旧列(经度、纬度和 Id 列)。在我看来,我希望将这 4 列导出到一个新的文本文件中。我希望你明白我在说什么。

最佳答案

如果你想更新数组那么..

text["features"].forEach(function(feature){
feature["geometry"].z = feature["attributes"].Longtitude +
feature["attributes"].Latitude;
})

此处,forEach 遍历数组中的所有元素(在您的例子中,text["features"] 是一个对象数组)。函数作为参数传递给 forEach。 forEach docs MDN .

如果您想要数组的副本,请在文本上使用 map

let newArray = text["features"].map(function(feature){
return feature["attributes"].Longtitude + feature["attributes"].Latitude;
})

map 遍历数组并提供更新后的新数组。 map docs MDN .

Result image .

希望对您有所帮助!

关于javascript - 如何在 Javascript 中读取、编辑旧数组并保存新数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48516684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com