10

我需要创建一个新对象,迭代最初看起来像这样的对象数组:

startObj = [{'prop': true}, {'prop': false}];

我希望结果是:

endObj = {0: true, 1: false}

我正在考虑使用$.each,但后来我不知道如何从这里开始。有什么提示吗?

$.each([{'prop': true}, {'prop': false}], function (i, o) {
    var newObj;
    // the new object should look like this
    // newObj = {0: true, 1: false}
});
4

5 回答 5

12

这是一个单线。

var newObj = $.map(oldObj, function(val) { return val.prop; });

js小提琴

如果 OP 真的想要一个对象(或者更确切地说,不想要一个数组)......

var newObj = $.extend({}, $.map(oldObj, function(val) { return val.prop; }));

js小提琴

于 2012-10-12T09:53:23.147 回答
7
var newObj = {};
$.each([{'prop': true}, {'prop': false}], function (i, o) {
    newObj[i] = o.prop;
});

现场示例:http: //jsfiddle.net/8X48q/

于 2012-10-12T09:50:29.943 回答
1

首先,这只是原生 JS,这里不需要 jQuery。

var startObj = [{'prop': true}, {'prop': false}],
    endObj = [], // This could also be {} if you want but if you just have an array in startObj, it doesn't make much sense
     i = 0,
     i_max = startObj.length;

for (i; i < i_max; i++) {
    endObj.push( startObj[i].prop );
    // if you changed endObj to be {} then use the following line instead of the one above
    // endObj[i] = startObj[i].prop;
}
于 2012-10-12T09:52:03.303 回答
0

您实际上并不是在这里创建一个对象,而是一个数组:

var newObj = [];//array
$.each([{'prop': true}, {'prop': false}], function (i, o)
{
    newObj[i] = o.prop
});

但是为了避免全局变量,您可能需要使用 IIFE:

var newObj = (function()
{//takes any amount of objects as argument
    var returnArray = [];
    var argumentsToArray = Array.prototype.slice.apply(arguments,[0]);//create array of objects passed
    $.each(argumentsToArray, function (i, o)
    {
        returnArray[i] = o.prop
    });
    return returnArray;//is assigned to newObj
})({'prop': true}, {'prop': false});//1 obj, 2, 3, 4, 5... doesn't matter
于 2012-10-12T09:53:50.953 回答
-3
var obj = "{";
$.each([{'prop': true}, {'prop': false}], function (index, o) {
    obj += '"' + index  + '":'  + o.prop + ",";
});
var newObj = obj.substring(0, obj.length - 1);
newObj += "}";
console.log(newObj);
console.log($.parseJSON(newObj));
​
于 2012-10-12T10:02:56.590 回答