Javascript数组字符串作为图像键

时间:2016-01-03 12:19:05

标签: javascript arrays

我有一个数组:

myArray = [];

当一个新的字符串被添加到数组中时,我想使用字符串作为图像键在我的画布上绘制一个图像。 注意数组中最多可包含20个字符串

myArray.push("apple");

然后需要运行它以将图像绘制到画布上:

item_apple = game.add.sprite(70, 70, 'apple');

末尾的苹果串是数组中的字符串,它也是" item _"之后的苹果。在开始时。

如何在添加新项目时从数组中获取字符串并将其用作图像键。我想我需要一些循环,所以每次将字符串推送到数组的末尾时,使用添加到数组中的新项的字符串运行add.sprite。

2 个答案:

答案 0 :(得分:0)

如果你要问的话,你可以这样做:

SELECT * FROM your_table ORDER BY CONCAT(foreName, company);

如果数组的长度始终为item_apple = game.add.sprite(70, 70, myArray[myArray.length-1]); ,则可以将其设为myArray [0]。

答案 1 :(得分:0)

听起来你想在每次将一个项添加到数组时调用一个方法。假设您不依赖于Angular,React或RXjs这样的框架,Array.observe似乎是您最好的选择。

Array.observe是非标准功能,目前仅受Chrome 36支持,因此如果您需要广泛的浏览器支持,则需要use a polyfill

但基本上,它应该像这样工作

var arr = ['a', 'b', 'c'];

Array.observe(arr, function(changes) {
  console.log(changes);
});

arr[1] = 'B';
// [{type: 'update', object: <arr>, name: '1', oldValue: 'b'}]

arr[3] = 'd';
// [{type: 'splice', object: <arr>, index: 3, removed: [], addedCount: 1}]

arr.splice(1, 2, 'beta', 'gamma', 'delta');
// [{type: 'splice', object: <arr>, index: 1, removed: ['B', 'c', 'd'], addedCount: 3}]

该例子来自MDN Documentation

所以在你的情况下,你需要两个变量。用于保存字符串的数组,以及用于保存键的映射(或对象)(我假设它是game.add.sprite返回的内容)

var myArray = []
var myImages = {}

function addImage(imageString){
    myImages['item_'+imageString] = item_apple = game.add.sprite(70, 70, imageString);
}

Array.observe(myArray, function(changes){
    if( changes.type === 'add' ){
        addImage( changes.object[ changes.object.length -1 ] )
    }
});

因此以下内容将导致此

myArray.push('apple');

// myArray = ['apple']
// myImages = { item_apple: <Object> }

但是,我不确定与可用的polyfill所提出的Array.observe规范的一致性如何。所以你的里程可能会有所不同。

但是,我认为最好的办法是使用像React.js这样的东西。它非常适合这类东西。如果您不熟悉React,我建议您花几天时间学习它。