所以我有一个对象(编辑:最初称它为“哈希”)
newHash =
{item1: "spam",
item2: "everything"
}
我只想返回“垃圾邮件”和“一切”。
编写这样的for循环似乎不起作用:
for (var x in newHash) {return newHash[x].value}
谢谢!
编辑:按照流行的惯例,用“对象”替换了有问题的“哈希”一词。
所以我有一个对象(编辑:最初称它为“哈希”)
newHash =
{item1: "spam",
item2: "everything"
}
我只想返回“垃圾邮件”和“一切”。
编写这样的for循环似乎不起作用:
for (var x in newHash) {return newHash[x].value}
谢谢!
编辑:按照流行的惯例,用“对象”替换了有问题的“哈希”一词。
尝试这样的事情:
function getObjectValues(obj) {
var i, ret = [];
for( i in obj) if( obj.hasOwnProperty(i)) ret.push(obj[i]);
return ret;
}
关于你的问题的标题,我想你想这样做:
var newHash = {
item1: "spam",
item2: "everything"
};
newHash.item1; // "spam"
newHash['item1']; // "spam"
newHash.item2; // "everything"
newHash['item2']; // "everything"
然后,如果要获取所有值,则需要将它们存储到列表中:
var list = [];
for (var key in newHash) {
list.push(newHash[key]);
}
list; // ["spam", "everything"]
list.join(); // "spam,everything"
由于您的密钥基于相同的模式,您也可以这样做:
var list = [];
for (var i = 1; i <= 2; i++) {
list.push(newHash['item' + i]);
}
如果您不介意使用Underscore(这是一个很棒的库!),您可以这样做:
newHash = {
item1: "spam",
item2: "everything"
}
_.values(newHash)
返回:
["spam", "everything"]
您可以执行以下操作:
return Object.keys(newHash).map(function (key) { return newHash[key]; });
,它返回一个包含对象中值的数组。
它的工作原理是这样的:你得到一个键数组,然后使用 map 函数得到一个对应的数组,其中包含每个键的值。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
你的对象声明有一个 " 字符太多了。
newHash = {
item1: "spam",
item2: "everything"
}
for( var x in newHash )
console.log(newHash[x]);
您总是可以按照与Object.keys()
.
if (!('values' in Object.prototype)) {
Object.prototype.values = function (obj) {
return Object.keys(obj).map(function (p) { return obj[p]; });
}
}
var obj = {
'1': 'one',
'2': 'two',
'3': 'three'
}
console.log(obj.values()); // ["one", "two", "three"]
(function(o){var res=[],i;for(i in o){res.push(o[i]);}return res;})(newHash);