使用jQuery.map()函数创建自定义对象数组

时间:2014-01-29 09:29:52

标签: javascript jquery arrays object

enter image description here
我有如上所示的表,我想创建一个自定义数组来传递值。

目前我正在使用以下代码行:

var arr = $('input[type=text].editfield').map(function () {
        return this;
    }).get();
    var objArr = jQuery.map(arr, function (i) {
        return {
            myDate: i.parentElement.previousSibling.previousSibling.previousSibling.previousSibling.previousSibling.previousSibling.childNodes[0].textContent,
            myValue: i.value
        }
    }).get();

我希望我的网格中包含所有项目的对象数组,其中Date和Value分别作为属性。

但有些事情是错的,我无法解决。例如,上面的代码说“ jQuery.map(...)。get不是函数

如何更正我的代码以执行正确的操作?

1 个答案:

答案 0 :(得分:7)

不需要在静态jQuery.map()函数上使用.get(),它返回一个正确的数组,而插件方法.map()返回一个jQuery对象,你必须在其上调用{{ 3}}得到一个数组。


此外,无需使用2个循环,

var objArr = $('input[type=text].editfield').map(function (idx, i) {
    //the element selection used here is cruel, if you can share the html used we can help you to clean it
    return {
        // you can try myDate: $(this).parent().prevAll().eq(5).text() - not testable without the html and what is the expected output
        myDate: i.parentElement.previousSibling.previousSibling.previousSibling.previousSibling.previousSibling.previousSibling.childNodes[0].textContent,
        myValue: i.value
    };
}).get();