【kintone】テーブルの個数

フォームでテーブルを作成してそれを一覧でカスタムビューすること

を検討しております。

そこで、テーブルは

A|B|C

100|200|300

200|300|400

300|400|500

と三つのセルに分かれており、カスタムビューで表示させるために、この個数をJSで取得したいのです。

e.records[0].Table1.value[0]は

value{

{cell1:{A:100,B:200,C,300},cell2:{A:200,B:300,C,400},cell3:{A:300,B:400,C,500}}

}

 

といったようになっておりますが、

e.records[0].Table1.value[0].value.length

ではundefinedになってしまい、その個数(ABCで3つ)を取得することができません。連想配列の個数の取得としてJS上の問題かもしれませんが、この個数を取得するにはどのようにすればよろしいのでしょうか。

 

宜しくお願い申し上げます。

jQuery.noConflict();
(function($) {
"use strict";
kintone.events.on("app.record.index.show", function(e) {
if(e.viewId!==5520316){
return
}
console.log(e.records[0].Table1.value[0].value.length);


});
})(jQuery);

 

 

e.records[0].Table1の結果です↓また実際はcellではなくstringとなっています。

列の数を数えたいってことですよね?

Object.keys(e.records[0].Table1.value[0].value).length

でどうですか?

オブジェクトを一度配列に変換してやればlength使えます。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

ちなみに書式設定で「コード」を選ぶと

ソースコードが見やすいコードブロック表示になるので、

これも活用してみてくださいね。

コメント有難うございます。他のサーバーサイド言語ではオブジェクトであれ連想配列であれ

配列には変わりないので単純にlengthやcount等で個数を取得できたのですがJSの場合にはオブジェクトから

直接その要素の個数をlengthプロパティで取得できないのですね。

またコードの記載の仕方も初めてしりました。早速編集して更新させていただきました。はるかに見やすいですね。

改めて御礼申し上げます。

宜しくお願いいたします。

オブジェクトでも普通にlength使えたら便利なんですけどね。

JSは「プロトタイプベース」という、少々変わった仕組みでオブジェクト指向を実現してるので、

その辺の言語仕様が関係していそうです。

https://www.slideshare.net/yuka2py/javascript-23768378

 

配列と連想配列の関係を色々な言語で比較したこ記事、面白いですよ。

「JavaScriptのArrayは配列ではなく配列のふりをした連想配列だからです。」

ってのが一番のポイントですね。

http://blog.livedoor.jp/dankogai/archives/51858766.html

 

(マニアックですいませんw)

ありがとうございます!

JSのオブジェクト指向を学ぶ時に、プロトタイプチェーンはさらっと学んだのですが、

ちょっとこの機会に深層を学んでみようと思います。

また、普段はPHPerなので、rubyやpythonとの比較を見てへ~と思わず読み込んでしまいました。

やはりそれぞれ振る舞いや癖が違いますね。

まだまだ勉強不足を実感いたしました、精進いたします♪

深謝を申し上げる次第です。