web-dev-qa-db-ja.com

このオブジェクトの「forEachは関数ではない」のはなぜですか?

これはおそらく本当に馬鹿げたものですが、なぜこれが機能しないのか理解できません。

var a = {"cat":"large"};

a.forEach(function(value, key, map){
    console.log(value);
});

不明なTypeError:a.forEachは関数ではありません

http://jsfiddle.net/ty7z6pse/

27
haventchecked

オブジェクトにはforEachがなく、 Arrayプロトタイプに に属します。オブジェクトの各キーと値のペアを反復処理して値を取得する場合。あなたはこれを行うことができます:

_Object.keys(a).forEach(function (key){
    console.log(a[key]);
});
_

使用上の注意:オブジェクトの場合_v = {"cat":"large", "dog": "small", "bird": "tiny"};_、Object.keys(v)はキーの配列を提供するので、取得します["cat"、 "dog"、 "bird"]

54
TaoPR

から結果にアクセスしようとしたとき

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"]
1
Ahmed Younes