我有一个带键值对的数组。
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
推送到变量中?
答案 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();
使用键和值
尝试此操作