拼接和打字稿

时间:2018-10-12 23:21:33

标签: javascript arrays typescript

我在Splice上遇到问题,我认为我没有正确理解这一点。假设我有17个项目的数组。我正在使用Splice函数将其拆分为两个数组。

let splicedItems = items.splice(0, 7);

如果我有商品0-17,则应删除商品0-6(7个商品)

然后,我在菜单上有一个用于下一步的按钮,然后应该再次进行拼接,但事实并非如此。我知道下一个按钮将传递所有信息,并且在下一页项目中读取时,我的数组长度为10。

我正在调用代码的第一部分,将其发送出去然后调出并显示下一个项目列表。第一部分工作正常,并显示7个项目。但是,我还有10个项目,而且我无法拆分代码,而且菜单也没有显示。

export function showPlayerInventory(itemJson: string){
mp.gui.chat.push("showpinv");
ContextMenu.DrawMenu.Reset();

ToggleCursor(true);

let items: Interfaces.GameItem[] = JSON.parse(itemJson);
invMenuItems = items;

let cursorpos = mp.gui.cursor.position;

if(!Array.isArray(items)){
    return;
}

items.sort();

if(items.length > 7)
{
    let splicedItems = items.splice(0, 7);
    invMenuItems = items;
    let nextJson = JSON.stringify(items);

    splicedItems.forEach((value, index, array) => {
        if (value == null)
            return;

            if(value.Quantity > 1){
                ContextMenu.DrawMenu.CreateOption(`${value.Name} (${value.Quantity})`, ["SelectOwnInventoryItem", value]);
            }
            else{
                ContextMenu.DrawMenu.CreateOption(`${value.Name}`, ["SelectOwnInventoryItem", value]);
            }
    });

    ContextMenu.DrawMenu.CreateOption("Next", ["SelectOwnInventoryItem", "next", items]);

    ContextMenu.DrawMenu.CreateOption("Exit", ["SelectOwnInventoryItem", "exit"]);

    ContextMenu.DrawMenu.Ready(true, cursorpos);
    return;
}
else
{
    items.forEach((value, index, array) => {
        if (value == null)
            return;

            if(value.Quantity > 1){
                ContextMenu.DrawMenu.CreateOption(`${value.Name} (${value.Quantity})`, ["SelectOwnInventoryItem", value]);
            }
            else{
                ContextMenu.DrawMenu.CreateOption(`${value.Name}`, ["SelectOwnInventoryItem", value]);
            }
    });
    ContextMenu.DrawMenu.CreateOption("Exit", ["SelectOwnInventoryItem", "exit"]);

    ContextMenu.DrawMenu.Ready(true, cursorpos);
    return;
}
return;
}

第二部分

export function showNextInventory(items: Interfaces.GameItem[]){
mp.gui.chat.push("showninv");
ContextMenu.DrawMenu.Reset();

ToggleCursor(true);

let cursorpos = mp.gui.cursor.position;

if(!Array.isArray(items)){
    return;
}

mp.gui.chat.push(items.length.toString());

items = invMenuItems;

if(items.length > 7)
{
    let splicedItems = items.splice(0, 7);
    invMenuItems = items;
    splicedItems.forEach((value, index, array) => {
        if (value == null)
            return;

            if(value.Quantity > 1){
                ContextMenu.DrawMenu.CreateOption(`${value.Name} (${value.Quantity})`, ["SelectOwnInventoryItem", value]);
            }
            else{
                ContextMenu.DrawMenu.CreateOption(`${value.Name}`, ["SelectOwnInventoryItem", value]);
            }
    });

    ContextMenu.DrawMenu.CreateOption("Next", ["SelectOwnInventoryItem", "next", items]);

    ContextMenu.DrawMenu.CreateOption("Exit", ["SelectOwnInventoryItem", "exit"]);

    ContextMenu.DrawMenu.Ready(true, cursorpos);
    return;
}
else
{
    items.forEach((value, index, array) => {
        if (value == null)
            return;

            if(value.Quantity > 1){
                ContextMenu.DrawMenu.CreateOption(`${value.Name} (${value.Quantity})`, ["SelectOwnInventoryItem", value]);
            }
            else{
                ContextMenu.DrawMenu.CreateOption(`${value.Name}`, ["SelectOwnInventoryItem", value]);
            }
    });
    ContextMenu.DrawMenu.CreateOption("Exit", ["SelectOwnInventoryItem", "exit"]);

    ContextMenu.DrawMenu.Ready(true, cursorpos);
    return;
}
return;
}

0 个答案:

没有答案