我正在开发一个只能访问基础JS的项目,没有基于ERP脚本系统的控制台/警报等。
我使用ERP系统输出进行搜索,基本上search[index].getValue(column[index])
从中检索到的所有值都是正确的并经过验证。
我的数据包含以下列
sku,displayname,locid,onhand,onorder,committed,backordered,intransit,available,id
数据源我使用pulls 2搜索结果为每个SKU,一个用于2个位置," 13" &安培; " 4&#34 ;.我的目标是,如果该行的locid为4,我将使用可用字段添加到数组(由sku索引),如果locid为13,则我想将其添加到同一行,但字段名称略有不同(以aq为前缀。
下面的代码
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]);
}
}
我的问题是,无论我试图重写多少次,每当我输出项目[sku]时,特定数组只有一组值,即可用或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
答案 0 :(得分:2)
好的,我最终将你的编辑和评论拼凑在一起。
您正尝试使用公共$items[sku]
密钥在循环中多次填充sku
。
但是,您使用item[sku]
items[sku] = [];
所以有几件事:
items[sku]
应该是对象而不是数组。
如果设置了空对象,则不应重置为空对象。
因此,在代码段的第7行附近,将items[sku] = [];
更改为:
if( !items.hasOwnProperty(sku) || typeof(items[sku]) != 'object' ){
items[sku] = {};
}
这样你只能设置一个已空的空对象。