# How to get objects from layer by scripting API?

**URL:** <https://discourse.mapeditor.org/t/how-to-get-objects-from-layer-by-scripting-api/6635>\
**Category:** Questions\
**Created:** [March 14, 2024, 8:06am UTC](https://discourse.mapeditor.org/t/how-to-get-objects-from-layer-by-scripting-api/6635 "2024-03-14T08:06:48Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![cupenoruler](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.mapeditor.org/cupenoruler/32/4494_2.png) [@cupenoruler](https://discourse.mapeditor.org/u/cupenoruler)\
**Post date:** [March 14, 2024, 8:06am UTC](https://discourse.mapeditor.org/t/how-to-get-objects-from-layer-by-scripting-api/6635/1 "2024-03-14T08:06:48Z")

</div>

Here is my example.

```javascript
let layer = map.layerAt(i);
if (layer.isObjectLayer) {
    for (let i = 0; j < layer.objectCount; i++) {
        let object = layer.objectAt(i);
    }
}

```

Sadly, it’s wrong: TypeError: Property ‘objectAt’ of object Tiled::EditableTileLayer(0x5ab2523e9e80) is not a function

---

<div class="post-metadata">

**Author:** ![cupenoruler](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.mapeditor.org/cupenoruler/32/4494_2.png) [@cupenoruler](https://discourse.mapeditor.org/u/cupenoruler)\
**Post date:** [March 14, 2024, 8:52am UTC](https://discourse.mapeditor.org/t/how-to-get-objects-from-layer-by-scripting-api/6635/2 "2024-03-14T08:52:49Z")

</div>

So, `layer.objectAt` doesn’t work, but `layer.objects` yes.  
I don’t know why.

```javascript
let layer = map.layerAt(i);
if (layer.isObjectLayer) {
    for (const o of layer.objects) {
        tiled.log(`obj: ${o.id}, ${o.text}`)
    }
}

```

---

<div class="post-metadata">

**Author:** ![eishiya](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.mapeditor.org/eishiya/32/2534_2.png) [@eishiya](https://discourse.mapeditor.org/u/eishiya)\
**Post date:** [March 14, 2024, 11:51am UTC](https://discourse.mapeditor.org/t/how-to-get-objects-from-layer-by-scripting-api/6635/3 "2024-03-14T11:51:01Z")

</div>

> [@cupenoruler](#):
>
> TypeError: Property ‘objectAt’ of object Tiled::EditableTileLayer(0x5ab2523e9e80)

This says your layer is a Tile Layer. Did you actually have the layer.IsObjectLayer check in there when you ran the code?

---

<div class="post-metadata">

**Author:** ![cupenoruler](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.mapeditor.org/cupenoruler/32/4494_2.png) [@cupenoruler](https://discourse.mapeditor.org/u/cupenoruler)\
**Post date:** [March 14, 2024, 12:09pm UTC](https://discourse.mapeditor.org/t/how-to-get-objects-from-layer-by-scripting-api/6635/4 "2024-03-14T12:09:25Z")

</div>

Oh, I re-run it, `layer.objectAt` is ok now. Sorry for my mistake, maybe I’m forgot to save it before. Just ignore it.

```javascript
let layer = map.layerAt(i);
if (layer.isObjectLayer) {
    for (let i = 0; j < layer.objectCount; i++) {
        let object = layer.objectAt(i);
    }
}

```

Maybe I forget to save the code. Sorry. just ignore it
