键值对是根据键自动排列数据

时间:2018-02-21 14:19:07

标签: javascript angular typescript

我在角度创建了一个键值对。关键是questionId,value是baseQuestion,baseQuestion值可以为null。现在问题是在插入之后,键值对按键的升序排序。我想保持插入顺序。如果目前的实现无法做到这一点我们如何实现它。到目前为止,我的代码是

for (let i = 0; i < this.questions.length;i++){
    let j= this.questions[i]['questionId'];                
    qnKeyValue[j]= (this.questions[i]['baseQuestion'] == undefined ?null : this.questions[i]['baseQuestion']);
}

2 个答案:

答案 0 :(得分:0)

您可以在Angular

中使用loadash字典作为键值对

*

import { Dictionary } from 'lodash';
   let dic: Dictionary<number> = {};
   for (let i = 0; i < this.questions.length;i++){
   let j= this.questions[i]['questionId'];      
   dic[j] = (this.questions[i]['baseQuestion'] == undefined ?null : 
   this.questions[i]['baseQuestion']);;
   }

但由于字典是一个哈希表,我不认为我们可以对插入顺序进行排序。 为此,您必须使用有序字典。

答案 1 :(得分:0)

您可以在Javascript中创建Ordered哈希来维护广告订单。

function makeOrderedHash() {
    var keys = [];
    var vals = {};
    return {
        push: function(k,v) {
            if (!vals[k]) keys.push(k);
            vals[k] = v;
        },
        insert: function(pos,k,v) {
            if (!vals[k]) {
                keys.splice(pos,0,k);
                vals[k] = v;
            }
        },
        val: function(k) {return vals[k]},
        length: function(){return keys.length},
        keys: function(){return keys},
        values: function(){return vals}
    };
};

var myHash = makeOrderedHash();