这可能是非常愚蠢的,但我不明白为什么这不起作用。
var a = {"cat":"large"};
a.forEach(function(value, key, map){
console.log(value);
});
未捕获的TypeError:a.forEach不是函数
答案 0 :(得分:46)
对象没有forEach
,它属于to Array
prototype。如果要遍历对象中的每个键值对并获取值。你可以这样做:
Object.keys(a).forEach(function (key){
console.log(a[key]);
});
使用说明:对于对象v = {"cat":"large", "dog": "small", "bird": "tiny"};
,Object.keys(v)
会为您提供一系列密钥,以便您获得 [“cat”,“dog”,“鸟“]
答案 1 :(得分:0)
当我尝试从
访问结果时 Object.keys(a).forEach(function (key){
console.log(a[key]);
});
它是纯文本结果,没有键值对 这是一个例子
var fruits = {
apple: "fruits/apple.png",
banana: "fruits/banana.png",
watermelon: "watermelon.jpg",
grapes: "grapes.png",
orange: "orange.jpg"
}
现在我想在一个单独的数组中获取所有链接,但使用此代码
function linksOfPics(obJect){
Object.keys(obJect).forEach(function(x){
console.log('\"'+obJect[x]+'\"');
});
}
结果:
linksOfPics(fruits)
"fruits/apple.png"
"fruits/banana.png"
"watermelon.jpg"
"grapes.png"
"orange.jpg"
undefined
我想出了一个解决了我正在寻找的问题
console.log(Object.values(fruits));
["fruits/apple.png", "fruits/banana.png", "watermelon.jpg", "grapes.png", "orange.jpg"]
答案 2 :(得分:0)
如果您确实需要使用安全的foreach接口来迭代对象,并使其可重复使用并通过npm模块进行清理,则可以使用它, https://www.npmjs.com/package/foreach-object
例如:
import each from 'foreach-object';
const object = {
firstName: 'Arosha',
lastName: 'Sum',
country: 'Australia'
};
each(object, (value, key, object) => {
console.log(key + ': ' + value);
});
// Console log output will be:
// firstName: Arosha
// lastName: Sum
// country: Australia