我有以下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>
我还试图打印出一些额外的信息,这些信息存储在我的对象中,名为&#39; xtra - &#39; +产品[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来自价值&#39; xtra - &#39; +产品[i]存储在
中答案 0 :(得分:3)
问题出在.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)
,您将获得所需的结果。
答案 1 :(得分:1)