javascriptオブジェクトのキー値として配列を設定するにはどうすればよいですか?

Parth Tamane

javascriptを使用してJSONオブジェクトのキー値として配列を設定しようとしています。

配列の値を設定すると、

console.log(obj ["likes"])は、サイズ1の配列を表示します。

しかし、次の行でconsole.log(obj)は、likesキーがサイズ0の配列であることを示しています。


投稿に関する情報を含むJSONオブジェクトがあります。

投稿にいいねが存在しない場合、そのフィールドはその投稿のオブジェクトに存在しません。

ユーザーが投稿を高く評価したかどうかを確認する、好き嫌いの更新機能を実装しようとしています。

彼がそうしていない場合、私は彼のユーザー名をいいねの配列に追加します。そうでない場合は、彼のユーザー名を削除します。

userIDは、スクリプトタグの先頭で定義するグローバル変数です。

userIDの代わりに、次のような新しい文字列を設定すると機能します。

obj["likes"] = ["XX"]

これも機能します(余分なスペースがありますが、少なくとも正しくログに記録されます):

obj["likes"] = [userId+" "]
console.log(obj["likes"])
console.log("Obj:",obj)

しかし、これをもう一度行うことは機能しません!!!!

let arr = [" "+userId]
console.log(arr)
arr[0] = arr[0].trim()
console.log(arr)
obj["likes"] = arr
console.log("Obj:",obj)
function saveLikeDislike(url, action) {
        for (i = 0; i < crawledUrlsData.length; i += 1) {

            if (typeof crawledUrlsData[i] === "object") {

                var obj = crawledUrlsData[i]

                if (url === obj["url"]) {

                    if (action === "like") {

                        if ("likes" in obj) {
                            likes = obj["likes"]
                            if (likes.includes(userId)) {
                                likes = likes.filter(id => id != userId)
                            } else {
                                likes.push(userId)
                            }
                            obj["likes"] = likes
                        } else {
                            var id = window.userId
                            console.log(userId)

                            obj["likes"] = [id]
                            console.log(obj["likes"])
                            console.log("Obj:",obj)
                        }

                        if ("dislikes" in obj) {
                            var dislikes = obj["dislikes"]

                            if (dislikes.includes(userId)) {
                                dislikes = dislikes.filter(id => id != userId)
                                obj["dislikes"] = dislikes
                            }
                        }

                    } else {

                        if ("dislikes" in obj) {
                            dislikes = obj["dislikes"]
                            if (dislikes.includes(userId)) {
                                dislikes = dislikes.filter(id => id != userId)
                            } else {
                                dislikes.push(userId)
                            }
                            obj["dislikes"] = dislikes
                        } else 
                            obj["dislikes"] = [dislikes]
                        }

                        if ("likes" in obj) {
                            var likes = obj["likes"]

                            if (likes.includes(userId)) {
                                likes = likes.filter(id => id != userId)
                                obj["likes"] = likes
                            }
                        }
                    }

                    crawledUrlsData[i] = obj
                    console.log(obj["likes"])

                    renderData()
                    return
                }
        }
    }

コンソール出力

Parth Tamane

かっこを外していたことがわかりました。

しかし、これは、ある行でキー値が設定され、次の行でuserIdにアクセスするときにconsole.logからの出力が異なるが、userIdが何らかの方法で変更された場合は適切であるという奇妙な動作を説明していません。

とにかく、これが固定関数です:

function saveLikeDislike(url, action) {
    for (i = 0; i < crawledUrlsData.length; i += 1) {

        if (typeof crawledUrlsData[i] === "object" && crawledUrlsData[i]["url"] == url) {

            var obj = crawledUrlsData[i]

            if (url === obj["url"]) {

                if (action === "like") {

                    if ("likes" in obj) {
                        console.log("likes in obj")
                        likes = obj["likes"]
                        if (likes.includes(userId)) {
                            likes = likes.filter(id => id != userId)
                        } else {
                            likes.push(userId)
                        }
                        obj["likes"] = likes
                    } else {

                        obj.likes = [userId]
                        console.log("Obj:",obj)
                    }

                    if ("dislikes" in obj) {
                        var dislikes = obj["dislikes"]
                        console.log("Dislikes: ",dislikes)
                        if (dislikes.includes(userId)) {
                            dislikes = dislikes.filter(id => id != userId)
                            obj["dislikes"] = dislikes
                        }
                    }

                } else if (action === "dislike"){

                    if ("dislikes" in obj) {
                        dislikes = obj["dislikes"]
                        if (dislikes.includes(userId)) {
                            dislikes = dislikes.filter(id => id != userId)
                        } else {
                            dislikes.push(userId)
                        }
                        obj["dislikes"] = dislikes
                    } else {
                        obj["dislikes"] = [userId]
                    }
                    if ("likes" in obj) {
                        var likes = obj["likes"]
                        console.log("ID: ",userId)
                        if (likes.includes(userId)) {
                            likes = likes.filter(id => id != userId)
                            obj["likes"] = likes
                        }
                    }
                }    
            }

                crawledUrlsData[i] = obj

                linkTreeRef.set(crawledUrlsData)
        }
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

javascriptを使用してオブジェクトの配列からキーの一意の値を取得するにはどうすればよいですか?

分類Dev

DOM要素からキーと値を使用してオブジェクトの配列を作成するにはどうすればよいですか?

分類Dev

オブジェクトキーの初期値を設定するにはどうすればよいですか?

分類Dev

PHPで、重複が同じ値を持つキーと値のペアのサブセットとして定義されているオブジェクトの配列内の重複を削除するにはどうすればよいですか?

分類Dev

JavaScriptの配列から特定のキーと値を持つオブジェクトを作成するにはどうすればよいですか?

分類Dev

文字列の配列をオブジェクトに変換して、それらのオブジェクトをキーと値のペアに分割できるようにするにはどうすればよいですか?

分類Dev

javascriptを使用して、オブジェクトの配列の値を同じ値でグループ化するにはどうすればよいですか?

分類Dev

配列のキーと等しいjsonオブジェクトの値を一覧表示するにはどうすればよいですか?

分類Dev

Pythonでdictオブジェクトのすべてのキーにデフォルト値を設定するにはどうすればよいですか?

分類Dev

PowerShellを使用して配列JSON内のオブジェクトからキー値を取得するにはどうすればよいですか?

分類Dev

キーの配列を提供してオブジェクト値を動的に変更するにはどうすればよいですか?

分類Dev

JavaScript:addEventListener関数内のパラメーターとして親オブジェクトを設定するにはどうすればよいですか?

分類Dev

MongoDBで_idとオブジェクトIDの配列を複合主キーとして指定するにはどうすればよいですか?

分類Dev

オブジェクト内のキーの値である配列にオブジェクトを追加するにはどうすればよいですか?

分類Dev

PHP、オブジェクトの配列、オブジェクト値の1つのセットを配列キーとして使用するにはどうすればよいですか?

分類Dev

Vue v-if内で、オブジェクトの配列内のオブジェクトが指定されたキーに対して特定の値を持っているかどうかを確認するにはどうすればよいですか?

分類Dev

PHPの連想配列のキーとして複雑なオブジェクトを使用するにはどうすればよいですか?

分類Dev

HashMap JavaオブジェクトのキーとしてMATLAB配列を使用するにはどうすればよいですか?

分類Dev

1つのキーに配列が含まれているオブジェクトの配列から個別の値を取得してJavaScriptをカウントするにはどうすればよいですか?

分類Dev

JSONオブジェクトをサブ配列とマージして、jqで置き換えるのではなく、配列内で値が一致するオブジェクトを追加するにはどうすればよいですか?

分類Dev

Firebaseオブジェクトを取得してローカルオブジェクトと等しく設定するにはどうすればよいですか?

分類Dev

このオブジェクトを配列に変換し、Reactのキーで値にアクセスするにはどうすればよいですか?

分類Dev

reactとjavascriptを使用してオブジェクトの配列がnullかどうかを確認するにはどうすればよいですか?

分類Dev

Jq:オブジェクトにオブジェクトの配列があり、値が一致しないキーを持っている場合、オブジェクトを選択するにはどうすればよいですか?

分類Dev

オブジェクトの値としてdomセレクターを使用してオブジェクトを反復処理し、それらを使用して値を設定するにはどうすればよいですか?

分類Dev

jQueryのオブジェクトの配列の比較に基づいてキー値を変更するにはどうすればよいですか?

分類Dev

JavaScriptまたはjQueryを使用して配列内にあるオブジェクトの値を変更するにはどうすればよいですか?

分類Dev

jqueryとjavascriptを使用してオブジェクト配列から値を取得するにはどうすればよいですか

分類Dev

連続する要素の配列オブジェクトの繰り返しキー値の数を取得するにはどうすればよいですか?

Related 関連記事

  1. 1

    javascriptを使用してオブジェクトの配列からキーの一意の値を取得するにはどうすればよいですか?

  2. 2

    DOM要素からキーと値を使用してオブジェクトの配列を作成するにはどうすればよいですか?

  3. 3

    オブジェクトキーの初期値を設定するにはどうすればよいですか?

  4. 4

    PHPで、重複が同じ値を持つキーと値のペアのサブセットとして定義されているオブジェクトの配列内の重複を削除するにはどうすればよいですか?

  5. 5

    JavaScriptの配列から特定のキーと値を持つオブジェクトを作成するにはどうすればよいですか?

  6. 6

    文字列の配列をオブジェクトに変換して、それらのオブジェクトをキーと値のペアに分割できるようにするにはどうすればよいですか?

  7. 7

    javascriptを使用して、オブジェクトの配列の値を同じ値でグループ化するにはどうすればよいですか?

  8. 8

    配列のキーと等しいjsonオブジェクトの値を一覧表示するにはどうすればよいですか?

  9. 9

    Pythonでdictオブジェクトのすべてのキーにデフォルト値を設定するにはどうすればよいですか?

  10. 10

    PowerShellを使用して配列JSON内のオブジェクトからキー値を取得するにはどうすればよいですか?

  11. 11

    キーの配列を提供してオブジェクト値を動的に変更するにはどうすればよいですか?

  12. 12

    JavaScript:addEventListener関数内のパラメーターとして親オブジェクトを設定するにはどうすればよいですか?

  13. 13

    MongoDBで_idとオブジェクトIDの配列を複合主キーとして指定するにはどうすればよいですか?

  14. 14

    オブジェクト内のキーの値である配列にオブジェクトを追加するにはどうすればよいですか?

  15. 15

    PHP、オブジェクトの配列、オブジェクト値の1つのセットを配列キーとして使用するにはどうすればよいですか?

  16. 16

    Vue v-if内で、オブジェクトの配列内のオブジェクトが指定されたキーに対して特定の値を持っているかどうかを確認するにはどうすればよいですか?

  17. 17

    PHPの連想配列のキーとして複雑なオブジェクトを使用するにはどうすればよいですか?

  18. 18

    HashMap JavaオブジェクトのキーとしてMATLAB配列を使用するにはどうすればよいですか?

  19. 19

    1つのキーに配列が含まれているオブジェクトの配列から個別の値を取得してJavaScriptをカウントするにはどうすればよいですか?

  20. 20

    JSONオブジェクトをサブ配列とマージして、jqで置き換えるのではなく、配列内で値が一致するオブジェクトを追加するにはどうすればよいですか?

  21. 21

    Firebaseオブジェクトを取得してローカルオブジェクトと等しく設定するにはどうすればよいですか?

  22. 22

    このオブジェクトを配列に変換し、Reactのキーで値にアクセスするにはどうすればよいですか?

  23. 23

    reactとjavascriptを使用してオブジェクトの配列がnullかどうかを確認するにはどうすればよいですか?

  24. 24

    Jq:オブジェクトにオブジェクトの配列があり、値が一致しないキーを持っている場合、オブジェクトを選択するにはどうすればよいですか?

  25. 25

    オブジェクトの値としてdomセレクターを使用してオブジェクトを反復処理し、それらを使用して値を設定するにはどうすればよいですか?

  26. 26

    jQueryのオブジェクトの配列の比較に基づいてキー値を変更するにはどうすればよいですか?

  27. 27

    JavaScriptまたはjQueryを使用して配列内にあるオブジェクトの値を変更するにはどうすればよいですか?

  28. 28

    jqueryとjavascriptを使用してオブジェクト配列から値を取得するにはどうすればよいですか

  29. 29

    連続する要素の配列オブジェクトの繰り返しキー値の数を取得するにはどうすればよいですか?

ホットタグ

アーカイブ