редактировать json файл с пользовательскими функциями | раздор. js, nodejs - PullRequest
0 голосов
/ 13 июля 2020

эй, у меня есть файл с такими данными JSON, который называется data.json:

"servers":
{
   "sv-123344":
   {
      "owner": "id",
      "vstats": false
   },
   "sv-44332211":
   {
      "owner": "id",
      "vstats": false
   }
},

"users":
{
    "uid-111222":
    {
       "favlist":
       [
          "1",
          "2",
          "3"
       ]
    },

    "uid-445566":
    {
       "favlist":
       [
          "1",
          "2",
          "3"
       ]
    }
}

Итак, в основном мне нужны 3 функции, которые я не знаю, как их писать

1- Мне нужна функция, чтобы проверить, существует ли ввод в favlist пользователя или нет: if(checkExist(userid, input) == true)

2- i нужна функция для добавления ввода в favlist, например: addFav(userid, input)

3- , и мне нужна функция удаления, чтобы удалить ввод из favlist, например: removeFav(userid, input)

, поэтому я был бы очень благодарен, если бы кто-нибудь мог помочь мне с этими кодами, и все кредиты будут go всем, кто мне поможет

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

В вашем JSON объекте отсутствуют некоторые {}, а также для возможности удаления данных из массива / объекта, который вам нужен, используйте функцию массива, например filter и map

js={"servers":{ "sv-123344": { "owner": "id", "vstats": false }, "sv-44332211": { "owner": "id", "vstats": false } }, "users": { "uid-111222": { "favlist": [ "1", "2", "3" ] }, "uid-445566": { "favlist": [ "1", "2", "3" ] } } }


function checkfav(userid,input){
  var bool
  Object.entries(js.users).forEach(o=>{
    if(o[0]==userid){
      var inp=input.toString()
      bool= o[1].favlist.includes(inp)
    } 
  })
  return bool
}

function addtofav(userid,input){
  var ar
  Object.entries(js.users).forEach(o=>{
    inp=input.toString()
     if(o[0]==userid)
     o[1].favlist.push(inp)
     ar=o[1].favlist
  })
  return ar
}

function removeFav(userid, input){
  var arr
  Object.entries(js.users).forEach(o=>{
    inp=input.toString()
     if(o[0]==userid){
      if(o[1].favlist.includes(inp)){
        o[1].favlist.splice(o[1].favlist.indexOf(inp),1)
       }
       arr=o[1].favlist
    }
     })
     
  return arr
}

console.log(checkfav(1))
console.log(addtofav("uid-445566",9))
console.log(removeFav("uid-111222",2))
0 голосов
/ 13 июля 2020

1.) Ваш JSON искажен. вам нужно окружить все {} следующим образом:

{
  "servers":
  {
    ...
  },
  "users":
  {
    ...
  }
}

Итак, если ваш список избранного - let favlist = [1, 2, 3], вы можете использовать favlist.includes(value), чтобы увидеть, содержит ли ваш список избранного ввод. Просто позвольте вашей функции checkExists вернуть результат этой функции.

Поскольку ваш список избранного является массивом, вы можете использовать favlist.push(value) для добавления значений в ваш массив. Однако он не проверяет наличие дубликатов.

Чтобы удалить конкретное c значение из массива, вам нужно найти индекс этого значения. Используйте следующее:

/* if value = 2 and favlist = [1,2,3], then this gives index = 1 */
let index = favlist.findIndex(x => x === value); 
favlist.splice(index, 1);

Просто помните, чтобы позаботиться о возможных дубликатах.

...