Javascript平面列表到数组连接

Javascript平面列表到数组连接,javascript,Javascript,我正在努力解决一个特定的Javascript问题,我希望有人能提供帮助 我有一个名称和值对列表,例如: 苹果50 香蕉60 葡萄70 苹果40 橙色30 我试图用这些值创建一个Javascript对象: var myObj = {}; 然后对于列表中的所有项目: myObj[name] = value; 但正如您所看到的,一些名称多次出现在列表中(例如Apple),因此在本例中,我希望通过将对象中的值转换为数组并将新值添加到数组中,将其添加到对象的相同属性中 因此,myObj将包含: 苹果=

我正在努力解决一个特定的Javascript问题,我希望有人能提供帮助

我有一个名称和值对列表,例如:

苹果50
香蕉60
葡萄70
苹果40
橙色30

我试图用这些值创建一个Javascript对象:

var myObj = {};
然后对于列表中的所有项目:

myObj[name] = value;
但正如您所看到的,一些名称多次出现在列表中(例如Apple),因此在本例中,我希望通过将对象中的值转换为数组并将新值添加到数组中,将其添加到对象的相同属性中

因此,myObj将包含:

苹果=[50,40]
香蕉=60
葡萄=70
橙色=30

有人帮忙吗

谢谢

AJ像这样:

var obj = { };
for (var i = 0; i < keys.length; i++) {
    var k = keys[i];

    if (k in obj) {
        if (obj[k] instanceof Array) {
            obj[k].push(values[i]);
        else
            obj[k] = [ obj[k], values[i] ];
    } else
        obj[k] = values[i];
}
var obj={};
对于(变量i=0;i
如果某些值已经是数组,它们将被展平,而不是嵌套。

如下所示:

var obj = { };
for (var i = 0; i < keys.length; i++) {
    var k = keys[i];

    if (k in obj) {
        if (obj[k] instanceof Array) {
            obj[k].push(values[i]);
        else
            obj[k] = [ obj[k], values[i] ];
    } else
        obj[k] = values[i];
}
var obj={};
对于(变量i=0;i
如果某些值已经是数组,它们将被展平,而不是嵌套。

我的方式

var MyObj = function(){};
MyObj.prototype.addItem = function(key, val){
    var typ = typeof this[key];
    switch (typ){
        case 'undefined':
            this[key] = val;
            break;
        case 'object':
            this[key].push(val);
            break;
        default:
            this[key] = [this[key], val];
            break;
    }
}

var myObj = new MyObj;

myObj.addItem('Apple', 50);
myObj.addItem('Apple', 70);

console.log(myObj);
我的方式

var MyObj = function(){};
MyObj.prototype.addItem = function(key, val){
    var typ = typeof this[key];
    switch (typ){
        case 'undefined':
            this[key] = val;
            break;
        case 'object':
            this[key].push(val);
            break;
        default:
            this[key] = [this[key], val];
            break;
    }
}

var myObj = new MyObj;

myObj.addItem('Apple', 50);
myObj.addItem('Apple', 70);

console.log(myObj);

如果对象以该名称存在,为什么不将所有值作为数组,然后向其推送新值?如果对象以该名称存在,为什么不将所有值作为数组,然后向其推送新值?可能会重复两次、三次,谁知道会重复多少次。这将在一个数组内、另一个数组内和以此类推。它可能重复两次、三次,谁知道还会重复多少次。这将在一个数组中生成一个数组,在另一个数组中生成一个数组,以此类推。。