动态插入并从数组中检索键值对 - Javascript

Dynamically Insert and Retriev the key value pair from array - Javascript

本文关键字:检索 键值对 Javascript 数组 插入 动态      更新时间:2023-09-26

尝试将动态键和值插入到 html 页面的数组对象中。

    var answers=[];
    $(".btn-like, .btn-dislike").click(function() {
        var $this = $(this);
        var value = $this.text();
        var inter_data_type = $this.parent().attr('id');
          if(!inter_data_type in answers) {
            answers.push({"inter_data_type":value});
          }
         alert(answers); //displaying [object][object]
         alert(answers.inter_data_type); // displaying undefined
    });

在插入之前需要检查数组中是否存在键,如果键和值存在,则无需插入它,如果键相同且值不同,则需要替换特定键的值。 但上面的代码不起作用。即使它插入数组也无法获取值。

尝试alert(answers[0].inter_data_type)答案是一个数组,所以你必须说出你对哪个元素感兴趣。您可以通过提供数字索引来做到这一点。

我建议使用更好的可视化

console.debug(answers);

请尝试以下操作

answers.push({"inter_data_type":"value"});
alert(answers[0].inter_data_type); // displaying undefined

我看了你的问题,意识到你要求的东西比我最初想象的要多。但是试试这个:

var  answers=[];
    var value = $this.text();
    var inter_data_type = $this.parent().attr('id');
    var isThere = false;
    for(var i=0; i<answers.length; i++)
    {
        if(answers[i].inter_data_type==inter_data_type)
        {isThere=true;break;}
    }
    if(isThere===true){
       answers.push({inter_data_type:inter_data_type, value:value});
     }        
    console.debug(answers);
    console.debug(answers[0].inter_data_type,answers[0].value);

您使用键值对在数组中插入数据,它是 JSON。 因此,如果您想让它处于警报状态,则必须这样做并检查键或值是否存在。

希望对您有所帮助。享受编码..!!

var answers=[];
var value = $this.text();
var inter_data_type = $this.parent().attr('id');
for(var i = 0; i < answers.length; i++){
    if(answers.hasOwnProperty(i)){
        for(var prop in answers[i]){ // For get Key
            if(answers[i].hasOwnProperty(prop)){
                if(answers[i].hasOwnProperty(prop) == inter_data_type){ //For check key is same or not
                    if(answers[i][inter_data_type] != value){ // For check value is same or not
                        answers[i][inter_data_type] = value;  // replace value if not same
                    }else{
                    }
                }else{
                    answers.push({inter_data_type:value});
                }
            }
        }
    }
    alert(JSON.stringify(answers));
}

你可以试试这种方式:

var answerMap = [];
if (answerMap["key_name"] == undefined) {
    answerMap["key_name"] = value;
}

如果使用地图而不是数组,我们可以实现这一点。

var answers={}; 
answers[inter_data_type]=value;

根据对问题的编辑并期望问题需要动态键、动态值和"if"语句检查答案中inter_data_type的动态值。以下是工作脚本。

var answers=[];
$(".btn-like, .btn-dislike").click(function() {
    var $this = $(this);
    var value = $this.text();
    var inter_data_type = $this.parent().attr('id');
      if(!(inter_data_type in answers)) {   // Please note the extra brackets used here
        answers[inter_data_type] = value;
      }
     alert(answers); // It will display ["Some inter data": "Some Val"]
     alert(answers[inter_data_type]); // It will display "Some val"
});