【问题标题】:Get automated names for JS object keys [duplicate]获取 JS 对象键的自动名称 [重复]
【发布时间】:2022-01-11 16:11:50
【问题描述】:

我正在 GoogleEarthEngine 中构建一个 JS 脚本。我多年来一直在自动化代码以获得每年的植被指数(增强植被指数(EVI))。我正在处理的代码本身要复杂得多,这就是为什么我在这里为这个问题添加了一个。(code here)。

我正在尝试在 JS 对象的 key 中获取图层的名称。所以它会是:

buffer_size: 500
class: 0
EVI_2021_mean: MEAN_VALUE_FOR_THIS_YEAR

最后,其他列也遵循相同的思路,只是改变了对象的Key中的年份值及其Value的平均值对象

格式本身很重要,因此我可以在之后将其导出到 KML 并继续进行进一步分析。

相反,我得到的是字符串 'key' 作为 Key 和字符串 EVI_2021_mean 作为 Value

features: List (4 elements)
0: Feature 0 (Polygon, 3 properties)
type: Feature
id: 1
geometry: Polygon, 24 vertices
properties: Object (3 properties)
    buffer_size: 500
    class: 0
    key: EVI_2021_mean

Obs:我在 GetMean 函数中设置平均值:

var GetMean = function (fc, img, nome_img) {
  print(nome_img);
  
  var dict = [];
  var ZS_mean =  img.reduceRegion({
    reducer: ee.Reducer.mean()
    ,geometry: POI
    ,scale: 30
  });
  dict.push({
    key:   nome_img+'_'+'mean',
    value: ZS_mean.constant
  });
  print(ZS_mean);

  var SetMean = function(f) {
    return f.set(dict[0]);
  };
  
  return POI.map(SetMean);
};

【问题讨论】:

    标签: javascript json object


    【解决方案1】:

    您可以使用以下表示法为 JavaScript 对象设置动态键:

    const myKey = 'someKey'
    const myObj = {
        [myKey]: 'myValue'
    }
    
    console.log(myObj)  // => { someKey: 'myValue' }
    

    此外,您可以像这样在现有对象上设置动态属性:

    const myKey = 'someKey'
    const myObj = {}
    
    myObj[myKey] = 'myValue'
    
    console.log(myObj)  // => { someKey: 'myValue' }
    

    我建议修改您的代码以使 dict 成为一个对象(例如 dict = {}),而您在哪里 dict.push({ ... }) 可以像 dict[nome_img+'_mean'] = ZS_mean.constant 一样。

    【讨论】:

      猜你喜欢
      • 2017-05-21
      • 2017-04-06
      • 1970-01-01
      • 2020-05-04
      • 2017-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多