所以我有一个对象(编辑:最初称之为“哈希”),如
newHash =
{item1: "spam",
item2: "everything"
}
我只想回复“垃圾邮件”和“一切”。
似乎写这样的for循环不起作用:
for (var x in newHash) {return newHash[x].value}
谢谢!
编辑:根据流行惯例,将“hash”替换为“Object”。
答案 0 :(得分:2)
尝试这样的事情:
function getObjectValues(obj) {
var i, ret = [];
for( i in obj) if( obj.hasOwnProperty(i)) ret.push(obj[i]);
return ret;
}
答案 1 :(得分:1)
如果您不介意使用Underscore(这是一个很棒的库!),您可以这样做:
newHash = {
item1: "spam",
item2: "everything"
}
_.values(newHash)
返回:
["spam", "everything"]
答案 2 :(得分:1)
关于你问题的标题,我想你想这样做:
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]);
}
答案 3 :(得分:0)
您可以执行以下操作:
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
答案 4 :(得分:0)
你的对象声明有“很多角色。
newHash = {
item1: "spam",
item2: "everything"
}
for( var x in newHash )
console.log(newHash[x]);
答案 5 :(得分:0)
(function(o){var res = [],i; for(i in o){res.push(o [i]);} return res;})(newHash);
答案 6 :(得分:0)
您始终可以沿与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"]