简体   繁体   English

如何在Javascript中向数组添加可忽略的动态值?

[英]How can I add omitable dynamic values to an array in Javascript?

I am adding dynamical values to my array from two tables (datatables.js) as in here: 我从两个表(datatables.js)向数组添加动态值,如下所示:

var formArray = {
    "valueFromA0" : table1.row(0).data()[1],
    "valueFromA1" : table1.row(1).data()[1],
    "valueFromB0" : table2.row(0).data()[1],
    "valueFromB1" : table2.row(1).data()[1]
};

These tables are also dynamically created. 这些表也是动态创建的。 So some of the values (or even all of them) can be empty. 因此,某些值(甚至所有值)可以为空。 I want to omit 'undefined'/empty values during the creation array. 我想在创建数组时忽略“未定义” /空值。 For example, say valueFromA1, valueFromB0 and valueFromB1 are undefined so it means there should be only one value in the array like this: 例如,说valueFromA1,valueFromB0和valueFromB1是未定义的,因此这意味着数组中应该只有这样一个值:

"valueFromA0" : "5" “ valueFromA0”:“ 5”

Try this: 尝试这个:

var formArray = {
    "valueFromA0" : "7",
    "valueFromA1" : undefined,
    "valueFromB0" : "5",
    "valueFromB1" : undefined
};

function removeEmptyEntries(obj)
{
    for(var prop in obj)
    {
        if(obj.hasOwnProperty(prop) && !obj[prop])
            delete obj[prop];
    }
}


removeEmptyEntries(formArray);
console.log(formArray);

JSFIDDLE . JSFIDDLE

There is no way to do it with the object literal. 无法使用对象字面量执行此操作。

var formArray = {}, tmp;
if ((tmp = table1.row(0).data()[1]) !== undefined) formArray.valueFromA0 = tmp;
if ((tmp = table1.row(1).data()[1]) !== undefined) formArray.valueFromA1 = tmp;
...

Try utilizing Object.keys() , Array.prototype.filter() , Array.prototype.forEach() ; 尝试利用Object.keys()Array.prototype.filter()Array.prototype.forEach() ; create new object , set properties where value not undefined at formArray object to new object 创建新对象,将formArray对象中undefined值的属性设置为新对象

 var formArray = { "valueFromA0" : 1, "valueFromA1" : 2, "valueFromB0" : undefined, "valueFromB1" : undefined }; // new `Object` var res = {}; Object.keys(formArray).filter(function(val) { // filter `formArray` object keys where value not `undefined` return formArray[val] !== undefined }).forEach(function(val) { // set properties , values at `res` res[val] = formArray[val]; }); console.log(res) 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM