我有下面的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/

10-06 04:37