如何使用JavaScript生成8个,比如1到100之间的唯一随机数?
我有几千个整数键的列表.我需要对此列表执行的唯一操作是说明给定值是否在列表中.
对于C#,我会用a HashSet来快速查找.什么是JavaScript等价物?
最低支持级别:IE 9 +,jQuery(当前)
据我所知,有没有associative arrays在javascript,只是objects.
但是,我可以像这样array使用字符串键创建bracket notation:
var myArray = [];
myArray['a'] = 200;
myArray['b'] = 300;
console.log(myArray); //prints [a: 200, b: 300]
Run Code Online (Sandbox Code Playgroud)
所以,我想在不使用的情况下做同样的事情 bracket notation
var myNewArray = [a: 200, b: 300]; //getting error - Unexpected token:
Run Code Online (Sandbox Code Playgroud)
这也行不通
var myNewArray = ['a': 200, 'b': 300]; //same error, why can I not create?
Run Code Online (Sandbox Code Playgroud) 我发现jCache和其他一些使用关联数组的本土方法.如果您有使用jCache的经验,是否有任何限制?
我有一个函数,它接收 JS 对象列表作为参数。我需要将有关这些对象的信息存储在私有变量中以供将来参考。我不想将属性填充到对象本身中,我只想将其保留在字典中。我需要能够在亚线性时间内查找对象的元数据。
为此,我需要一个hash函数,对于任意两个对象o1和o2,
hash(o1) !== hash(o2)每当o1 !== o2。
这种哈希函数的一个完美例子就是对象的内存地址,但我不认为 JS 公开了这一点。有办法吗?
我正在使用两个数组来完成检查array2中是否存在array1中的值的任务。如果是这样,请删除array1中的内容,并继续检查直到array1为空。如果它们不存在,则从函数中返回。我正在使用Javascript
我使用经典的两个for循环来实现它,其运行时间为o(n * 2)。我想知道是否有其他有效的方法可以使用javascript支持的任何其他数据结构来执行此操作。下面是我当前的实现
for(var j = 0; j < tempArray.length; j++){
for(var k = 0; k < this.probsSolved.length; k++){
if(tempArray[j] == this.probsSolved[k]){
tempArray.splice(j,1);
if(tempArray.length <= 0){
this.updateAchievements(achID);
this.storage.set(achKey,1);
return;
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我必须调用每5秒执行一次此操作的函数,这对我来说效率极低。
有人可以提出一种比我可以使用的算法或数据结构更好的算法或一种更好的数据结构,如果可以的话,我将如何使用。
我想确保我不能在 React 状态下将重复的值推送到数组中。尽管如此,重复的值仍在数组中。
我试过使用.includes但它不起作用。
const categoryCheck = (category) => {
let categories = [...this.state.categories]
if (this.state.categories === undefined) {
return
}
console.log(categories, category)
console.log(!categories.includes(category))
if (!categories.includes(category) === false) {
categories.push(category)
console.log('new category', categories)
}
}
Run Code Online (Sandbox Code Playgroud)
输入: 'cat'
预期结果:['cat']
实际结果:['cat', 'cat']
更新:这是我的功能,这就是我的称呼。感谢所有的帮助!
uniqueCategories = category => {
//makes sure that there are no duplicate categories in array
if (category === undefined) {
return;
}
let categories = new Set(category);
categories = Array.from(categories);
console.log(categories);
return categories;
};
Run Code Online (Sandbox Code Playgroud)
我在另一个像这样的函数中调用它: …
我想在javascript中创建一个新变量,但它的名字应该由陈旧的部分和变量之类的东西组成:
tab_counter = 1;
var editor + tab_counter = blabla
Run Code Online (Sandbox Code Playgroud)
好吧,我希望新的变量名称在这种情况下编辑器1,这可能吗?
我希望能够从数组中删除一个对象而不循环所有对象数组,以查看当前数组元素是否具有我想要删除的项的ID.
JavaScript的:
function CBooks() {
this.BooksArray = [];
this.AddBook = function(divID, sContents) {
this.BooksArray.push(new CBook());
pos = this.BooksArray.length - 1;
this.BooksArray[pos].ArrayID = pos;
this.BooksArray[pos].DivID = divID;
this.BooksArray[pos].Contents = sContents;
}
this.DelBook = function(divID) {
this.BooksArray.splice(...);
}
}
function CBook() {
this.ArrayID = 0;
this.DivID = "";
this.Contents = "";
}
Run Code Online (Sandbox Code Playgroud)
我像这样初始化对象:
var oBooks = new CBooks();
Run Code Online (Sandbox Code Playgroud)
我添加了这样一本新书:
oBooks.AddBook("divBook1", "blahblahblah");
//Creation of the div here
oBooks.AddBook("divBook2", "blehblehbleh");
//Creation of the div here
Run Code Online (Sandbox Code Playgroud)
现在,用户可以单击显示每本书的div中的X按钮,以便他可以删除该书.所以X按钮包含:
onclick=oBooks.DelBook(this.id);
Run Code Online (Sandbox Code Playgroud)
现在显然在DelBook(divID)函数中,我可以循环遍历BooksArray的长度并查看每个元素,如果它的divID等于参数并在那时拼接,但我想避免循环.
有什么办法吗?
提前致谢
我有包含数组的对象,我希望它包含关联数组,因此键是字符串.怎么做?这不起作用:
{profiles: { easy:["example" : 1],advanced:["example" : 1] }
Run Code Online (Sandbox Code Playgroud)
我想避免
console.log({profiles: { easy:{"example" : 1},advanced:{"example" : 1} })
Run Code Online (Sandbox Code Playgroud)
因为简单和高级成员不会显示为数组而是显示为对象.
我知道的另一种方法是:array ['key2'] ='新值'; 但这不是对象的一部分,所以我需要拆分多行的命令 - 这不是我想要的.
PHP有类似数组("mykey"=>"myValue"),但JavaScript有类似的东西吗?
但我不想使用框架,这只是JavaScript.
我需要暂时跟踪JavaScript中5个对象的状态.每个对象都有一个GUID作为其id.因此,我希望创建一个可以使用的键/值对数组.每对的关键是每个对象的id.每对的值将是一个布尔值.我的问题是,我真的不确定如何在JavaScript中执行此操作.目前,我有以下内容:
var myKeyValuePairs;
var myObjects = getMyObjects();
for (var i=0; i<myObjects.length; i++) {
var id = myObjects[i].id;
// What do I do now?
}
Run Code Online (Sandbox Code Playgroud)
如何在JavaScript中构建键/值对数组?