Ответ 1
var newObj = {};
$.each([{'prop': true}, {'prop': false}], function (i, o) {
newObj[i] = o.prop;
});
Пример в реальном времени: http://jsfiddle.net/8X48q/
Мне нужно создать новый объект, итерации по массиву объектов, который изначально выглядит следующим образом:
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}
});
var newObj = {};
$.each([{'prop': true}, {'prop': false}], function (i, o) {
newObj[i] = o.prop;
});
Пример в реальном времени: http://jsfiddle.net/8X48q/
Здесь однострочный.
var newObj = $.map(oldObj, function(val) { return val.prop; });
Если OP действительно хочет объект (или, скорее, не хочет массив)...
var newObj = $.extend({}, $.map(oldObj, function(val) { return val.prop; }));
Во-первых, это только родной 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;
}
Вы не создаете объект здесь, а массив:
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
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));