Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将数组设置为javascript对象中的键值?_Javascript_Html_Arrays_Json - Fatal编程技术网

如何将数组设置为javascript对象中的键值?

如何将数组设置为javascript对象中的键值?,javascript,html,arrays,json,Javascript,Html,Arrays,Json,我试图使用javascript将数组设置为JSON对象中的键值 当我设置数组值时 log(obj[“likes”])显示大小为1的数组 但是在下一行 log(obj)显示likes键是一个大小为0的数组 我有一个JSON对象,其中包含关于帖子的信息 如果一篇文章中不存在“喜欢”,那么该字段就不存在于该文章的对象中 我正在尝试实现一个like-loke-update函数,检查用户是否喜欢某篇文章 如果他没有,那么我将他的用户名附加到喜欢的数组中,否则我将删除他的用户名 userID是一个全局变量

我试图使用javascript将数组设置为JSON对象中的键值

当我设置数组值时

log(obj[“likes”])显示大小为1的数组

但是在下一行 log(obj)显示likes键是一个大小为0的数组


我有一个JSON对象,其中包含关于帖子的信息

如果一篇文章中不存在“喜欢”,那么该字段就不存在于该文章的对象中

我正在尝试实现一个like-loke-update函数,检查用户是否喜欢某篇文章

如果他没有,那么我将他的用户名附加到喜欢的数组中,否则我将删除他的用户名

userID是一个全局变量,我在脚本标记的开头定义它

如果我设置了一个新字符串而不是userID,则它会起作用,如下所示:

obj["likes"] = ["XX"]
这也有效(我得到了一个额外的空间,但它至少记录正确):

但是再这样做是不行的

let arr = [" "+userId]
console.log(arr)
arr[0] = arr[0].trim()
console.log(arr)
obj["likes"] = arr
console.log("Obj:",obj)
函数saveLikeDislike(url、操作){
对于(i=0;iid!=userId)
}否则{
likes.push(userId)
}
obj[“likes”]=喜欢
}否则{
var id=window.userId
console.log(用户ID)
obj[“likes”]=[id]
console.log(obj[“likes”])
console.log(“Obj:,Obj”)
}
如果(obj中的“不喜欢”){
var dislikes=obj[“dislikes”]
if(不喜欢。包括(userId)){
dislikes=dislikes.filter(id=>id!=userId)
obj[“不喜欢”]=不喜欢
}
}
}否则{
如果(obj中的“不喜欢”){
厌恶=对象[“厌恶”]
if(不喜欢。包括(userId)){
dislikes=dislikes.filter(id=>id!=userId)
}否则{
不喜欢。推送(userId)
}
obj[“不喜欢”]=不喜欢
}否则
obj[“不喜欢”]=[不喜欢]
}
如果(obj中的“喜欢”){
var likes=obj[“likes”]
if(likes.includes(userId)){
likes=likes.filter(id=>id!=userId)
obj[“likes”]=喜欢
}
}
}
crawledUrlsData[i]=obj
console.log(obj[“likes”])
renderData()
返回
}
}
}
两个问题。 1.usrId-userId打字错误已经提到。 2.这一行:

likes = likes.push(userId)
likes.push(something)
的输出是一个数字,push后数组的长度。这一行将等于
likes=1
。改为:

likes.push(userId)
两个问题。 1.usrId-userId打字错误已经提到。 2.这一行:

likes = likes.push(userId)
likes.push(something)
的输出是一个数字,push后数组的长度。这一行将等于
likes=1
。改为:

likes.push(userId)

push
返回数组的新长度-因此此行:

likes = likes.push(userId);
将是数字,而不是数组-删除分配:

likes.push(userId);

push
返回数组的新长度-因此此行:

likes = likes.push(userId);
将是数字,而不是数组-删除分配:

likes.push(userId);

结果我漏掉了一个括号

但这仍然不能解释这样一种奇怪的行为:在访问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)
        }
    }
}
函数saveLikeDislike(url、操作){
对于(i=0;iid!=userId)
}否则{
likes.push(userId)
}
obj[“likes”]=喜欢
}否则{
obj.likes=[userId]
console.log(“Obj:,Obj”)
}
如果(obj中的“不喜欢”){
var dislikes=obj[“dislikes”]
log(“不喜欢:”,不喜欢)
if(不喜欢。包括(userId)){
dislikes=dislikes.filter(id=>id!=userId)
obj[“不喜欢”]=不喜欢
}
}
}else if(动作==“不喜欢”){
如果(obj中的“不喜欢”){
厌恶=对象[“厌恶”]
如果(di