gpt4 book ai didi

javascript - 是否可以在数组中存储一个值的数字和名称?

转载 作者:行者123 更新时间:2023-11-30 12:04:56 25 4
gpt4 key购买 nike

我目前正在编写一个函数来预加载小游戏使用的所有图像以在数组上绘制。目前我将源的路径存储在两个不同的数组中来解决这个问题,但是是否可以有一个数组在从中获取值时既可以使用数字 i 也可以使用名称 n ?这将有助于以后更轻松地使用该值来搜索我的图片,并且使用 gameimage[153] 作为源值看起来不太整洁,我宁愿使用 gameimage["snakehead"]

当前代码示例:

//add images to the gameimages array to be loaded before gamestart
//add the snake images
var gameimages = [];
gameimages.push("snake30px.png", "snake30pxdown.png", "snake30pxup.png","snake30pxauch.png");

var gameimagesnumber = gameimages.length;

//start the startGame() when all images in the gameimages array is loaded, to avoid albino snake and lack of stuff to crash into
//NOTE: This is kinda "hackish" as the images is just loaded to make sure it is cached in browser...
//they're not actually used, but seem to have the same effect :x
for(var i = 0; i < gameimagesnumber; i++){
console.log("Loading " + gameimages[i]);
var image = new Image();
image.onload = function(){
//add the image in gameimagesnames for easier use in the code when needed
gameimagesnames[this.src.substring(this.src.lastIndexOf("/") + 1,this.src.length - 4)] = this.src;
checkforgamestart();
};
image.src = "images/" + gameimages[i];
}

//checking for gamestart
function checkforgamestart(){
if(gameimagesnumber > 1) gameimagesnumber--;
else startGame();
}

最佳答案

绝对!

在JS中,你可以制作任何数据类型的数组。您还可以访问对象。因此,让我们将它们结合起来。

var obj = {
name: 'a test name',
value: 1
}

var array = [obj];

array[0].name; // == 'a test name'
array[0].value; // == 1

var anotherObj = {
name: 'another name',
value: 7
}

array.push(anotherObj);


array[1].name; // == 'another name'
array[1].value; // == 7

更详细地阅读了您的问题,我发现您还希望有一个可以从任一值中提取的 get 方法。这有点棘手。

提供的另一个答案将执行此操作,但将数据存储在对象(不是数组)中的两个不同位置,并且还会丢失数组原型(prototype)。

为了在 Array 类类型中更好地解决这个问题,让我们利用 Array.filter!

array.filter(function(item) { return item.name === 'another name' })

这将为您提供满足您在给定回调函数中提供的任何条件的元素子数组。在这种情况下,使用我上面的数组,它会传回一个包含一个元素的数组; 另一个对象

关于javascript - 是否可以在数组中存储一个值的数字和名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35517865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com