尝试将动态Key和值插入到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
});
在插入之前需要检查密钥是否存在于数组中,如果密钥和值存在则不需要插入,如果密钥相同且值不同则需要替换特定密钥的值。但上面的代码不起作用。 即使它插入到数组中也无法获得该值。
答案 0 :(得分:1)
尝试alert(answers[0].inter_data_type)
答案是一个数组,所以你必须说出你感兴趣的元素。你可以通过提供数字索引来实现。
我建议使用更好的可视化
console.debug(answers);
答案 1 :(得分:0)
尝试以下
answers.push({"inter_data_type":"value"});
alert(answers[0].inter_data_type); // displaying undefined
答案 2 :(得分:0)
您使用键值对将数据插入到数组中,它是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));
}
答案 3 :(得分:0)
我看着你的问题,意识到你要求的东西比我原先想的还要多。 但试试这个:
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);
答案 4 :(得分:0)
您可以尝试这种方式:
var answerMap = [];
if (answerMap["key_name"] == undefined) {
answerMap["key_name"] = value;
}
答案 5 :(得分:0)
如果使用地图而不是数组,我们可以实现这一点。
var answers={};
answers[inter_data_type]=value;
答案 6 :(得分:-1)
根据对问题的编辑并期望问题需要动态密钥,动态值以及“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"
});