2017-09-04 20 views
-3
ここ

私は複数の値がQNoMarks配列で同じ小数点以下のキーのために存在している見つけるための配列を持っているとの配列中に存在するどのように見つけるか複数の値が同じ小数

var QNoMarks = [{"1.1":"4%"}, 
       {"1.2":"3%"}, 
       {"1.3":""}, 
       {"2":"2%"}, 
       {"3":"8%"}, 
       {"4.1":"5%"}, 
       {"4.2":""}, 
       {"5":"6%"}, 
       {"6.1":"2%"}, 
       {"6.2":"1%"} 
       ]; 

複数の値が中に存在している検索する方法同じ10進値。

{"1.1":"4%"},{"1.2":"3%"},{"1.3":""} // multiple value found in 1.1 and 1.2 
{"2":"2%"} // no multiple value 
{"3":"8%"} // no multiple value 
{"4.1":"5%"},{"4.2":""}, // no multiple value 
{"5":"6%"}, // no mulitple value 
{"6.1":"2%"},{"6.2":""},{"6.3":"1%"} // multiple value found in 6.1 and 6.3 
+1

これは、バケットソートと呼ばれています。 https://en.wikipedia.org/wiki/Bucket_sort – Bellian

+1

入力配列は既にソートされているように見え、出力は入力とほとんど違いがありません。 I.いくつかの場所にカンマの代わりに改行があります。これは本当に達成したいのですか? – cars10m

答えて

0

以下QNoMarksで

例えば出力あなたは私が前に同じ番号を持つすべてのオブジェクトをグループ化している

var QNoMarks = [{"1.1":"4%"}, 
 
       {"1.2":"3%"}, 
 
       {"1.3":""}, 
 
       {"2":"2%"}, 
 
       {"3":"8%"}, 
 
       {"4.1":"5%"}, 
 
       {"4.2":""}, 
 
       {"5":"6%"}, 
 
       {"6.1":"2%"}, 
 
       {"6.2":"1%"} 
 
       ]; 
 
let result = {};    
 
for(let element of QNoMarks){ 
 
    for(let property in element){ 
 
     let prefix = property.match(/(\d+)\.?/)[1]; 
 
     result[prefix] = result[prefix] || []; 
 
     result[prefix].push(element); 
 
    } 
 
} 
 

 
console.log(result);
ここ

次の方法で行うことができます小数点。正規表現を使用して値を取得しています

0

キーの整数値でグループ化し、同じグループに対してハッシュテーブルを使用できます。削減使用して整数によって

var data = [{ "1.1": "4%" }, { "1.2": "3%" }, { "1.3": "" }, { "2": "2%" }, { "3": "8%" }, { "4.1": "5%" }, { "4.2": "" }, { "5": "6%" }, { "6.1": "2%" }, { "6.2": "1%" }], 
 
    groups = Object.create(null), 
 
    result = []; 
 
    
 
data.forEach(function (o) { 
 
    var key = Math.floor(Object.keys(o)[0]); 
 
    if (!groups[key]) { 
 
     groups[key] = []; 
 
     result.push(groups[key]); 
 
    } 
 
    groups[key].push(o); 
 
}); 
 

 
console.log(groups); // as object with group keys 
 
console.log(result); // as array
.as-console-wrapper { max-height: 100% !important; top: 0; }

0

グループにそれら:

let QNoMarks = [{"1.1":"4%"},{"1.2":"3%"},{"1.3":""},{"2":"2%"}, {"3":"8%"}, {"4.1":"5%"}, {"4.2":""}, {"5":"6%"}, {"6.1":"2%"}, {"6.2":"1%"}]; 
 
let res = QNoMarks.reduce((a, b) => { 
 
    let key = Math.floor(Object.keys(b)[0]); 
 
    a[key] = (a[key] || []).concat(b); 
 
    return a; 
 
}, Object.create(null)); 
 
console.log(res);

関連する問題