JSON ob'ekt nomi sifatida tasodifiy qatorni qanday ishlatish kerak

Firebase qanday amalga oshirilayotgani kabi nomdagi tasodifiy magistral bilan JSON obyektini yaratishga harakat qilaman.

Maqsad: bolaning nomini tasodifiy qator bilan almashtiring.

Misol uchun:

"Users" : {
    "mGKgNDOw0qd77m6tmdDh76zOQOm2" : {
      "email" : "[email protected]",
      "firstName" : "some",
      "lastName" : "user",
      "username" : "someuser"
    },
    "vyMiCS7olNPh9bCXoKWqcIFNWVy2" : {
      "email" : "[email protected]",
      "firstName" : "some",
      "lastName" : "user2",
      "username" : "someuser2"
    }
}

Men hozirga qadar shu narsaga erishdim, boshimni tasodifiy funktsiya bilan boshlashni boshladim.

randomString(length) {
    return Math.round((Math.pow(36, length + 1) - Math.random() * Math.pow(36, length))).toString(36).slice(1);
}

Men o'z nomimdan tasodifiy mag'lubiyatga ega ob'ektga surish ni yuborishni xohlayman.

string interpolation ni sinab ko'rdim, lekin u ishlamayapti.

var expensesObject = {
  uid: {
    amount: spentAmount,
    category: selectedCategory,
    date: formattedDate,
    time: formattedTime,
    note: note
  }
}
0
Shunday qilib, sizning muammolaringiz tasodifiy sonni ishlab chiqaradimi yoki uni yaratgandan so'ng uni kalit sifatida ishlatadimi?
qo'shib qo'ydi muallif Alejandro Iván, manba
Sizning katalogingiz allaqachon yaratilgan bo'lsa va allaqachon uid kalitiga ega bo'lsa, shunday qilishingiz mumkin: 1) tasodifiy mag'lubiyatni var randomString = ...; (siz allaqachon oldingiz). 2) uid qatoridan uid kalitini uid code> Users.splice ('uid', 1); 4) Ma'lumotlarni yangi kalit bilan Foydalanuvchilar [randomString] = ma'lumotlar bilan qayta qo'shing;
qo'shib qo'ydi muallif Alejandro Iván, manba
Array hali yaratilmagan bo'lsa, faqat: 1) tasodifiy mag'lubiyatni yaratish var randomString = ...; 2) Sizning katalogingizni kalit sifatida ishlatish uchun = Users = {randomString: Edit: Bu oxirgi sintaksisga to'g'ri ishlayman, shuning uchun var Users = {}; > va keyin Users [randomString] = {...}; va u ishonch bilan ishlaydi.
qo'shib qo'ydi muallif Alejandro Iván, manba
Tasodifiy raqam bilan uid ni almashtirishni xohlaysizmi?
qo'shib qo'ydi muallif kind user, manba
@ AlejandroIván mening muammom bolaning nomini tasodifiy qator bilan almashtirishdir
qo'shib qo'ydi muallif J.Doe, manba
@Kinduser Ha, buni qanday qilishni bilasizmi?
qo'shib qo'ydi muallif J.Doe, manba

7 javoblar

var temp = expensesObject[uid];
expensesObject[randomString()] = temp;
2
qo'shib qo'ydi
Stakka xush kelibsiz !! Iltimos bizga tushuntirish bera olasizmi? rahmat
qo'shib qo'ydi muallif Robert, manba

Ushbu kodni ko'rib chiqing

var users = {}

users[ randomString(20) ] = {
    amount   : spentAmount,
    category : selectedCategory,
    date     : formattedDate,
    time     : formattedTime,
    note     : note
}
1
qo'shib qo'ydi

Turli joy uchun bitta tasodifiy raqamdan foydalanishingiz mumkin. Pastki yoki katta bo'lakni tekshiring.

Keyin uid xususiyatini yangi kalitga belgilang va xususiyatni o'chirib tashlang.

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

function replaceUID(object) {
    object[random(28)] = object.uid;
    delete object.uid;
}

function random(size) {
    var r, s = '';
    while (s.length < size) {
        r = Math.floor(Math.random() * 62);
        s += r >= 36 ? (r - 26).toString(36).toUpperCase() : r.toString(36);
    }
    return s;
}

var expensesObject = { uid: { amount: 'spentAmount', category: 'selectedCategory',
date: 'formattedDate', time: 'formattedTime', note: 'note' } };

replaceUID(expensesObject);
console.log(expensesObject);
</div> </div>
1
qo'shib qo'ydi
@ J.Doe, iltimos, tahrir qiling
qo'shib qo'ydi muallif Nina Scholz, manba
Tasodifiy mag'lubiyatni qanday yaratishni so'ramayman :)
qo'shib qo'ydi muallif J.Doe, manba

Buni [] dan foydalanib ob'ektning kalitini to'g'ridan-to'g'ri belgilash orqali amalga oshirishingiz mumkin:

var expensesObject = {}

expensesObject[uid] = {
    amount: spentAmount,
    category: selectedCategory,
    date: formattedDate,
    time: formattedTime,
    note: note
}
1
qo'shib qo'ydi
Yaxshi yondoshuv! Rahmat!
qo'shib qo'ydi muallif J.Doe, manba

Ob'ektni uid tasodifiy mag'lubiyatga ega bo'lgan yangi ob'ektga nusxalang<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var expensesObject = {
  uid: {
    amount: 5,
    category: "catA",
    date: "02-03-2017",
    time: "14:00:00",
    note: "Notes"
  }
};

var finalobject = {};
let propertyName = randomString(10); //get the random string
finalobject[propertyName] = expensesObject.uid; //copy uid object
console.log(finalobject);

function randomString(length) {
  return Math.round((Math.pow(36, length + 1) - Math.random() * Math.pow(36, length))).toString(36).slice(1);
}
</div> </div>
0
qo'shib qo'ydi
@ J.Doe Siz buni o'zingiz sinab ko'rishingiz mumkin, lekin sekin bo'lmaydi deb o'ylayman. Siz katta </​​i> deb nomlaysiz? Javobingizni yuqoriga ko'tarishni yoki muammoingizni hal qilsa, uni belgilashni unutmang
qo'shib qo'ydi muallif Weedoze, manba
@JAAulde Men javobni yangiladim
qo'shib qo'ydi muallif Weedoze, manba
Menimcha, OP, mavjud bo'lgan ob'ektda mavjud bo'lgan mulk nomi sifatida uid so'zini o'zgartirishi kerakligini o'ylamayman. Yakuniy kod namunasidagi ob'ekt faqat kerakli mahsulotning namunasidir
qo'shib qo'ydi muallif JAAulde, manba
@Weedoze bu men qidiryapman! Uid obyektini nusxa ko'chirishimiz kerakmi? Katta ma'lumotlar majmui bilan ishlayapman
qo'shib qo'ydi muallif J.Doe, manba
@Weedoze Men harajatlar obyektini har kuni o'zlashtiradigan harajatlar ilovasini ishlatmoqdaman. Sizning javobingizni bir soniya ichida qabul qilasiz, shuning uchun faqatgina buni qilishga ruxsat bermayman :)
qo'shib qo'ydi muallif J.Doe, manba

Siz shunday qila olasiz:

function randomString(length) {
    return Math.round((Math.pow(36, length + 1) - Math.random() * Math.pow(36, length))).toString(36).slice(1);
}

var keylength = 16; //<-- change as needed

var myObject = {
    amount: spentAmount,
    category: selectedCategory,
    date: formattedDate,
    time: formattedTime,
    note: note
  }

var expensesObject = {};

var uuid = randomString(keylength);

expensesObject[uuid]=myObject;//<-- use [ var_name ]
0
qo'shib qo'ydi

Bundan tashqari, mag'lubiyatni yaratib, uni JSON ob'ektiga aylantira olasiz:

var expensesObjectStr = "{"+ '"'+ uid+'"'+": {"+
    '"amount"'+":"+ spentAmount+","+
    '"category"'+":"+'"'+ selectedCategory+'"'+","+
    '"date"'+": "+'"'+ formattedDate+'"'+","+
    '"time"'+": "+'"'+ formattedTime+'"'+","+
    '"note"'+": "+'"'+ note+'"'+
  "} }";

var obj = jQuery.parseJSON(expensesObjectStr);

Here small fiddle - https://jsfiddle.net/skyr9999/2dvffaty/

0
qo'shib qo'ydi
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb