2013-06-26 26 views
3

我很努力。我知道这很简单,当你知道如何,但我不能得到它的窍门。jQuery/JavaScript对象,添加到里面的功能

我基本上要创建这样一个对象:

data = [{ 
    a: 1 
    b: "test" 
    c: 32 
}, { 
    a: 2 
    b: "test2" 
    c: 55 
}, { 
    a: 3 
    b: "xyz" 
    c: 103 
}] 

这仅仅是一个更大的函数的例子,所以我不想做的正是这一点,但了解那朵会帮我做更大的功能。

我会认为下面会工作,但它不完全。我猜它只是需要一些调整:

var data = new Object; 

$('.class-name').each(function() { 

    var a = $(this).data('a'); 
    var b = $(this).data('b'); 
    var c = $(this).data('c'); 

    data[] = { 
     a: a, 
     b: b, 
     c: c 
    } 

}); 

我与添加到对象的事情,也是我声明了函数外物体的事实挣扎。

我试过data.push,但我想我会混淆数组和对象。

感谢您的任何帮助。

+1

你初始化你的'data'变量作为自'Object',而不是一个'array'。将'data = new Object'更改为'data = []'来查看是否改变了任何东西。然后继续使用'data.push' – Kyle

回答

1
var data = []; 

//since data is an array 
//you can use it's native method `push` 
//to add an object or primitive to the next/last index 
data.push({ 
    a: 1, 
    b: 'test', 
    c: 32 
}); 

你甚至可以一次添加多个对象到数组。

data.push({ a: 2 b: "test2" c: 55 }, { a: 3 b: "xyz" c: 103 }); 

或者您可以分别创建对象,然后再添加它。

var someObj = { 
    a: 123, 
    b: 'hello', 
    c: 789 
}; 

data.push(someObj); 

related

+0

我已经将它标记为答案,因为它是第一个答案,并且是我为了实现这个目的而遵循的答案。所有的答案都很出色,Palash Mondal可能是最详细的。我无法接受所有的答案,并且接受任何答案都没有帮助,所以我已经用这个答案了。谢谢大家。 – user2143356

1

必须声明初始化data变量,数组和后来的 “推送” 消息对象:

var data = []; 

$('.class-name').each(function() { 

    var a = $(this).data('a'); 
    var b = $(this).data('b'); 
    var c = $(this).data('c'); 

    data.push({ 
     a: a, 
     b: b, 
     c: c 
    }); 

}); 
+0

JS中没有类型声明。虽然你可能是正确的,“*声明变量为*”听起来不对。 – Bergi

+0

@Bergi你是对的,它可能会导致混淆 –

1

用途:

data = [] 
data.push({ a: 1, b: 'test', c: 52 }) 

或者直接:

data = [{ a: 1, b: 'test', c: 52 }, { a: 2, b: 'test2', c: 53}] 
1

为了让事情变得简单,这样做:

// Create an empty Array 
var data = []; 
$('.class-name').each(function() { 

    // Get the data attribute values 
    var a = $(this).data('a'); 
    var b = $(this).data('b'); 
    var c = $(this).data('c'); 

    // Create an empty Object 
    var obj = {}; 

    // Set the object key-value pairs 
    obj['a'] = a; 
    obj['b'] = b; 
    obj['c'] = c; 

    // Push the object to the 'data' array 
    data.push(obj); 
}); 

// Check the data array in the console 
console.log(data); 

FIDDLE DEMO #1

但是你可以将它最小化,如:

// Create an empty Array 
var data = []; 
$('.class-name').each(function() { 

    // Get the data attribute values 
    var a = $(this).data('a'); 
    var b = $(this).data('b'); 
    var c = $(this).data('c'); 

    // Push the object to the 'data' array 
    data.push({a:a, b:b, c:c}); 
}); 

// Check the data array in the console 
console.log(data); 

FIDDLE DEMO #2

1
data[] = … 

这是PHP语法,而不是JavaScript。您想改为使用Array push method。让数据array(不是通用对象):

var data = new Array; 
// or simpler with an empty array literal: 
var data = []; 

然后

data.push({ 
    a: a, 
    b: b, 
    c: c 
});