0

这是我的第一篇文章,在 jQuery 上相当新。我正在寻找一种优雅的解决方案来从数组中填充 jQuery 对象

我有一个动态数组“carsArray”。我喜欢将 carsArray 中的值填充到 jquery 对象中。我有点工作,但我看到了 2 个问题。

  1. 我已将 carArray 硬编码为只有 5 个值,这是不正确的。它应该是灵活的。
  2. 不优雅的编码。我知道有更好的方法来实现最终结果。
;jQuery(function($) {

    carsArray = ['Nissan','Toyota','BMW'] // this is dynamically build. It could have many more values.

    var carArray = new Array();
    $.each(carsArray, function ( key, value ) {
        carArray[key] = value;
    });

    // '101','102'.. are random indexes. It could be any distinct value.

    $.carspicker.designs['custom'] = {
        '101': [carArray[0]],
        '102': [carArray[1]],
        '103': [carArray[2]],
        '104': [carArray[3]],
        '105': [carArray[4]]
    };

});

非常感谢任何建议。谢谢!

4

2 回答 2

0

jQuery(函数($){

carsArray = ['Nissan','Toyota','BMW'] // this is dynamically build. It could have many more values.

var carObj= {}; //new object
$.each(carsArray, function ( key, value ) {
    carObj[key] = value;
});

// '101','102'.. are random indexes. It could be any distinct value.

$.carspicker.designs['custom'] = carObj;

}); 或者

jQuery(函数($){

carsArray = ['Nissan','Toyota','BMW'] // this is dynamically build. It could have many more values.

var carArray = new Array();
$.each(carsArray, function ( key, value ) {
    carArray[key] = value;
});

// '101','102'.. are random indexes. It could be any distinct value.

$.carspicker.designs['custom'] = carsObject(carArray);
function carsObject(arr) {
    var maxlength = arr.length,
        i,//this index in array as well as the unique key in the object
        carObj = {};
    for(i = 0; maxlength > i; i += 1) {
        carObj[i] = arr[i];
    }
    return carObj;
}

});

于 2013-11-06T18:58:25.197 回答
0

据我了解,您希望将数组转换为对象,而键是无关紧要的。你可以:

var cars = ['Nissan','Toyota','BMW'];

var obj = cars.reduce(function(memo, car){
    memo[car] = car;
    return memo;
}, {});

但它只适用于 EcmaScript 5。

使用 jQuery,您可以使用扩展功能。我不确定使用数组作为参数是否 100% 合法,但仍然:

var obj = $.extend({}, cars);
于 2013-11-06T19:54:19.373 回答