var activeWords = {'居酒屋': 1, 'ラーメン': 4, 'フレンチ': 10};
こういった連想配列があったときに、これの値にあたる部分のみを文字列としてJOINしたいです。
上の activeWords
の場合に期待する文字列は 1,4,10
です。
for文で一度連想配列を回して、配列化してjoinすればよいのですが、もっと良い方法があればご教示いただきたいです。
よろしくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
ベストアンサー
ES7 に Object.values
というものがあります。
未対応ブラウザ用にPolyfillを適用するとして、Array#join
と組み合わせればスマートに実装出来ます。
JavaScript
1var obj = { foo: "bar", baz: 42 }; 2console.log(Object.values(obj)); // ['bar', 42] 3console.log(Object.values(obj).join(',')); // bar,42
ただし、プロパティ値がカンマを含まない事が必要条件としてあります。
カンマを含むならCSVのようにダブルクォートで括るフォーマットが必要になりますね。
JavaScript
1var obj = {foo: 'hoge,bar', baz: '"piyo"'}, 2 csv = '"' + Object.values(obj).map(function (value) { return value.replace(/"/g, '""'); }).join('","') + '"'; 3console.log(csv); // "hoge,bar","""piyo"""
Re: azuno_mix さん
投稿2016/08/29 13:34
編集2016/08/30 06:55総合スコア18194
0
Object.keys
を使う前提ですが参考までにどうぞ。
javascript
1var activeWords = {'居酒屋': 1, 'ラーメン': 4, 'フレンチ': 10}; 2 3var keys = Object.keys(activeWords); 4 5var result = keys.map(function(item){ 6 return activeWords[item] 7}).join(','); 8 9console.log(result); // 1,4,10
keysという変数は必須ではないので、短縮すると下記のような形になります。
javascript
1var activeWords = {'居酒屋': 1, 'ラーメン': 4, 'フレンチ': 10}; 2 3var result = Object.keys(activeWords).map(function(item){ 4 return activeWords[item] 5}).join(','); 6 7console.log(result); // 1,4,10
投稿2016/08/29 10:10
編集2016/08/29 10:22総合スコア2092
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
azuno_mix様
配列に入れてjoinをしなくとも以下のようにfor文で回せばよいかと。
var activeWords = {"居酒屋": 1, "ラーメン": 4, "フレンチ": 10};
for (var name in activeWords){
document.write(activeWords[name] + ",");
}
私の能力ではfor文を使わない方法は思いつかないので、for文は使ってしまっていますが、配列に一旦入れる⇒joinするの手間は省けます。
投稿2016/08/29 06:18
総合スコア217
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/04 04:12