从Key Value数组中获取值

时间:2017-01-04 10:38:06

标签: jquery arrays key-value

我有一个带键值对的数组。

12/07/2016 10:30

我想将var array=[ {Key:"Name",Value:"Sam" }, {Key:"Marks",Value:"50"}, {Key:"Subject",Value:"English"}, ]; 为'Subject'的对象的Value推送到变量中。我试图看看如何访问Value但在第一步失败了。 如何才能做到这一点?

Key

如何将for (var key in array[0]) { console.log(key[i].Value); //error: Cannot read property 'Value' of undefined } 为'主题'的对象Value推送到变量中?

3 个答案:

答案 0 :(得分:3)

您的for-in循环位于array[0]对象上,因此key是该对象的键(属性名称)。所以这个:

console.log(key[i].Value);

应该是

console.log(array[0][key].Value);

但是,根据你所说的你想做的事情,我认为不需要for-in循环:

  

我想将Key为'Subject'的对象的值推送到变量中。

Array#find(这是ES2015中的新功能 - 也就是ES6 - 但很容易调整/聚合填充)对此非常有用:

var entry = array.find(function(e) { return e.Key === "Subject"; });
if (entry) {
    theVariable = entry.Value;
}

如果您正在使用ES2015(现在仍然意味着转换),您可以使用箭头功能更简洁:

let entry = array.find(e => e.Key === "Subject");
if (entry) {
    theVariable = entry.Value;
}

但是如果你想坚持ES5及更早版本中的内容,那就是Array#some

array.some(function(e) {
    if (e.Key === "Subject") {
        theVariable = e.Value;
        return true; // stops the "loop"
    }
});

答案 1 :(得分:0)

抱歉,我之前误解了这个问题 - 编辑

我建议您使用jQuery.each()方法

var array=[ {Key:"Name",Value:"Sam" }, {Key:"Marks",Value:"50"}, {Key:"Subject",Value:"English"}, ]; 

$.each(array, function() { 
     if(this.Key === "Subject"){ 
        this.Value = "something" 
     } 
}); 

console.log(array);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 2 :(得分:0)

  function myFunction() {
    setTimeout(function(){ //some script }, 10000);
  }
  myFunction();

使用键和值

尝试此操作