我有下面的javascript,它将客户列表放到一个对象中,然后在页面上输出。
var name = ["andrew", "vic", "casey"];
var job = ["builder", "baker", "dentist"];
var product = [111, 222, 111];
var qty = [1, 2, 3];
var data = {};
for (i = 0; i < name.length; i++) {
a = {
"name": name[i],
"job": job[i],
"product": product[i],
"qty": qty[i]
};
a['xtra-' + product[i]] = qty[i];
data[name[i]] = a;
console.log(a);
}
data = $.map(data, function (val, key) {
return val;
});
data.sort();
$.each(data, function (i, val) {
$('body').append(val.name + ' - ' + val.job + ' - ' + val.product + ' - ' + val.qty + ' - ' + (val.xtra + val.product) + '<br>');
});
到目前为止,我已经有了see fiddle,正在输出人员名称-工作-产品-数量。
andrew - builder - 111 - 1 - NaN<br>
vic - baker - 222 - 2 - NaN<br>
casey - dentist - 111 - 3 - NaN<br>
我还试图打印一些存储在我的对象“xtra-” + product [i]中的额外信息。
您可以从控制台日志中看到它存储在一个示例中,例如xtra-222,但是,我无法在每个语句中输出它吗?
我知道我做了什么
val.xtra + val.product
正在尝试用字符串添加数字,这就是为什么它不起作用的原因,但我似乎无法弄清楚这里需要什么语法(可能是最后一个n项),或者也许还有另一种方法可以达到目的我要在这里吗?
如果有任何困惑,我希望我的输出是
andrew - builder - 111 - 1 - 1
vic - baker - 222 - 2 - 2
casey - dentist - 111 - 3 - 3
最后的1,2,3来自存储在a中的值'xtra-'+ product [i]
最佳答案
问题出在.each循环内,更具体地说是(val.xtra + val.product)
。
该循环的第一次运行的val对象是:Object {name: "andrew", job: "builder", product: 111, qty: 1, xtra-111: 1}
如您所见,该对象中没有xtra键,而是有一个xtra-111键。因此,如果使用(val['xtra-' + val.product] + val.product)
,您将获得所需的结果。
这是固定代码http://jsfiddle.net/VdVax/