gpt4 book ai didi

Javascript多维数组问题

转载 作者:行者123 更新时间:2023-12-01 03:47:13 26 4
gpt4 key购买 nike

我正在开发一个基于 ERP 脚本系统的项目,该项目只能访问基本 JS,没有控制台/警报等。

我正在使用 ERP 系统输出进行搜索,本质上是 search[index].getValue(column[index]) 从中检索到的所有值都是正确且经过验证的。

我的数据包含以下列

sku、显示名称、locid、现有、已订购、已提交、缺货、在途、可用、id

我使用的数据源为每个 SKU 提取 2 个搜索结果,每个位置对应 2 个位置“13”和“4”。我的目标是,如果该行的 locid 是 4,我将使用可用字段添加到一个数组(由 sku 索引),如果该行的 locid 是 13,我想将它添加到同一行,但字段名称略有不同(前缀为 q)。

下面的代码

searchLength = search.length;   
var items = [];
for(var i = 0, len = search.length; i < len; i++) {

var sku = search[i].getValue(columns[0]);
// html += search[i].getValue(columns[0]) + " - " + search[i].getValue(columns[1]) + " - " +search[i].getValue(columns[2]) + " - " +search[i].getValue(columns[3]) + " - " +search[i].getValue(columns[4]) + " - " +search[i].getValue(columns[5]) + " - " +search[i].getValue(columns[6]) + " - " +search[i].getValue(columns[7]) + " - " +search[i].getValue(columns[8]) + "<br>";
items[sku] = [];

items[sku]['displayname'] = search[i].getValue(columns[1]);
items[sku]['id'] = search[i].getValue(columns[9]);
items[sku]['loc'] = search[i].getValue(columns[2]);


if(search[i].getValue(columns[2]) == "4") {

items[sku]['onhand'] = search[i].getValue(columns[3]);
items[sku]['onorder'] = search[i].getValue(columns[4]);
items[sku]['committed'] = search[i].getValue(columns[5]);
items[sku]['backordered'] = search[i].getValue(columns[6]);
items[sku]['intransit'] = search[i].getValue(columns[7]);
items[sku]['available'] = search[i].getValue(columns[8]);
}
if(search[i].getValue(columns[2]) == "13") {

items[sku]['qonhand'] = search[i].getValue(columns[3]);
items[sku]['qonorder'] = search[i].getValue(columns[4]);
items[sku]['qcommitted'] = search[i].getValue(columns[5]);
items[sku]['qbackordered'] = search[i].getValue(columns[6]);
items[sku]['qintransit'] = search[i].getValue(columns[7]);
items[sku]['qavailable'] = search[i].getValue(columns[8]);
}


}

我的问题是,无论我尝试重写多少次,每当我输出 items[sku] 时,特定数组都只具有一组值,即数组中要么 available 要么 qavailable ,永远不会同时存在.

我已经调整了几个小时,我确信我只是错过了一些小东西,如果有人可以帮忙的话。

编辑下面的内容以显示示例输出,其中所有字段都应出现在数组中,这是由以下函数 http://locutus.io/php/var/var_dump/ 生成的

array(1) {
[ABC123456] =>
array(9) {
[displayname] =>
string(39) "Product Display Name Here"
[id] =>
string(4) "4745"
[loc] =>
string(1) "4"
[onhand] =>
string(4) "6816"
[onorder] =>
string(0) ""
[committed] =>
string(4) "1872"
[backordered] =>
string(0) ""
[intransit] =>
string(0) ""
[available] =>
string(4) "4944"
}
}

进一步编辑以显示进入函数的数据

ABC123456, Product Display Name Here, 13, 9552, , , , , ,9552
ABC123456, Product Display Name Here, 4, 6816, ,1872, , , ,4944

最佳答案

好的,我终于根据您的编辑和评论将其拼凑起来。

您正在尝试使用通用 sku 键在循环的多次传递中填充 $items[sku]

但是,您可以使用 items[sku] = []; 在每次迭代中重置 item[sku]

有几件事:

  1. items[sku] 应该是一个对象而不是数组。

  2. 如果已设置,则不应重置为空对象。

因此,在代码片段中的第 7 行左右,将 items[sku] = []; 更改为:

if( !items.hasOwnProperty(sku) || typeof(items[sku]) != 'object' ){
items[sku] = {};
}

这样你就只能设置一个已经为空的空对象。

关于Javascript多维数组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43497653/

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