2016-03-29 11 views
0

私の質問は、オブジェクトに変更して配列することは可能ですか?アレイをオブジェクトに変更する

次のコードは、配列内の各単語の出現回数を数えます。

[ Not: 1, 
    long: 1, 
    left: 2, 
    grab: 1, 
    an: 4, 
    Easter: 5, 
    bargain: 1,] 

代わりに、それはこのようにオブジェクトを返します。

// function for getting the frequency of each word within a string 
function getFreqword(){ 
    var string = tweettxt.toString(), // turn the array into a string 
     changedString = string.replace(/,/g, " "), // remove the array elements 
     split = changedString.split(" "), // split the string 
     words = []; 

    for (var i=0; i<split.length; i++){ 
    if(words[split[i]]===undefined){ 
     words[split[i]]=1; 
    } else { 
     words[split[i]]++; 
    } 
    } 
    return words; 
} 

それはので、それを変更するには、その代わりに、このような配列を返すことは可能ですか? { word: 'Not' num: 1 }など

+1

あなたはブラケット表記でオブジェクトのプロパティを割り当てることができます。 'obj [" prop2 "] = 2;'のようなブラケット表記法を使うと便利なことは、ブラケット記法が文字列を使うことができるということです。 '' var obj = {} var propName = "prop3" 'それから' obj [propName] = 2; 'obj.prop3 === 2'を真とする。 – Blindman67

+0

あなたが本当に望むものは、単一オブジェクトではなく、オブジェクトの配列です:[{word: 'Not'、num:1}、{word: 'long'、num:1}、...) – Arnauld

+0

@Andy tweetxtは並べ替えることができる文字列に変換されます。 – user4357505

答えて

2

Object.key()Array#map()を使用すると、オブジェクトをオブジェクトの配列に変換できます。

var obj = { Not: 1, long: 1, left: 2, grab: 1, an: 4, Easter: 5, bargain: 1 }, 
 
    array = Object.keys(obj).map(function (k) { return { word: k, num: obj[k] }; }); 
 

 
document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>'); 
 

 
// edit sorting 
 

 
array.sort(function (a, b) { return a.num - b.num; }); 
 
document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');

+1

ありがとうございますこれは魅力的です – user4357505

関連する問題