从键值数组中获取值
Get Value from Key Value array
我有一个包含键值对的数组。
var array=[
{Key:"Name",Value:"Sam" },
{Key:"Marks",Value:"50"},
{Key:"Subject",Value:"English"},
];
我想将 Key
为 'Subject' 的对象的 Value
推入变量。我试图查看如何访问 Value 但在第一步就失败了。
如何才能做到这一点?
for (var key in array[0])
{
console.log(key[i].Value); //error: Cannot read property 'Value' of undefined
}
如何将 Key
为 'Subject' 的对象的 Value
推入变量?
您的 for-in
循环在 array[0]
对象上,因此 key
是该对象的键(属性 名称)。所以这个:
console.log(key[i].Value);
应该是
console.log(array[0][key].Value);
但是,鉴于你所说的你想做的事情,我认为不需要 for-in
循环:
I want to push Value of object whose Key is 'Subject' into a variable.
Array#find
(这是 ES2015 中的新功能——又名 ES6——但很容易 shimmed/polyfilled)对此很有用:
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"
}
});
抱歉,我之前误解了这个问题 - 已编辑
我建议为此使用 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>
var array=[
{Key:"Name",Value:"Sam" },
{Key:"Marks",Value:"50"},
{Key:"Subject",Value:"English"},
];
var i=0;
var value;
for(array as value) {
value[i]=$(this).text();
i++;
alert(value[i]);
}
用键和值试试这个
我有一个包含键值对的数组。
var array=[
{Key:"Name",Value:"Sam" },
{Key:"Marks",Value:"50"},
{Key:"Subject",Value:"English"},
];
我想将 Key
为 'Subject' 的对象的 Value
推入变量。我试图查看如何访问 Value 但在第一步就失败了。
如何才能做到这一点?
for (var key in array[0])
{
console.log(key[i].Value); //error: Cannot read property 'Value' of undefined
}
如何将 Key
为 'Subject' 的对象的 Value
推入变量?
您的 for-in
循环在 array[0]
对象上,因此 key
是该对象的键(属性 名称)。所以这个:
console.log(key[i].Value);
应该是
console.log(array[0][key].Value);
但是,鉴于你所说的你想做的事情,我认为不需要 for-in
循环:
I want to push Value of object whose Key is 'Subject' into a variable.
Array#find
(这是 ES2015 中的新功能——又名 ES6——但很容易 shimmed/polyfilled)对此很有用:
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"
}
});
抱歉,我之前误解了这个问题 - 已编辑
我建议为此使用 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>
var array=[
{Key:"Name",Value:"Sam" },
{Key:"Marks",Value:"50"},
{Key:"Subject",Value:"English"},
];
var i=0;
var value;
for(array as value) {
value[i]=$(this).text();
i++;
alert(value[i]);
}
用键和值试试这个