简体   繁体   中英

How to Push the values in the array, using jquery

Trying to push the values into temp Array, from the existing array object. Here am validating whether the values are null or not in my existing object and then pushing it into temp Array.

But currently this is output I am getting : ["0","abc"]

Expected output should be [{"0":"abc"},{"1":"def"}]

Once the values are pushed into the temp array, I need to bind it to my html list.

This is what have tried.

JS:

var tempArray = [];
var json = [
  {
    "itemId": "1",
    "prodTitle": "abc",
  },
  {
    "itemId": "2",
    "prodTitle": "def",
  },
  {
    "itemId": "",
    "prodTitle": "",
  }  

]

for (var i=0;i<json.length;i++){
    if(json[i].itemId!=""&&json[i].prodTitle!="")
    tempArray.itemId = json[i].itemId;
    tempArray.prodTitle = json[i].prodTitle;
    tempArray.push(tempArray.itemId,tempArray.prodTitle);
}

console.log(tempArray);

Demo URL

You have many mistakes, here's right one

for (var i=0; i<json.length; i++){
    if(json[i].itemId && json[i].prodTitle) {
        tempArray.push(json[i]);
    }
}

Your mistakes

for (var i=0;i<json.length;i++){
    if(json[i].itemId!=""&&json[i].prodTitle!="") // <-- mistake, braces are needed, because you have 3 lines below
    tempArray.itemId = json[i].itemId; // <-- you are adding property to array
    tempArray.prodTitle = json[i].prodTitle; // <-- still adding
    tempArray.push(tempArray.itemId,tempArray.prodTitle); //<-- pushing strings, not valid object, use like --> {key: value}
}

Another option using Array.filter Also makes it chain-able. However a for loop will be faster, depends if the chain-ability is something you require, i find it quite powerful at times.

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

var json = [
  {
    "itemId": "1",
    "prodTitle": "abc",
  },
  {
    "itemId": "2",
    "prodTitle": "def",
  },
  {
    "itemId": "",
    "prodTitle": "",
  }  

];

var tempArray = json.filter(function (item) {
    return (isDefined(item.itemId) && isDefined(item.prodTitle)); 
});

function isDefined (o) {
    return o !== undefined && o !== null && o !== '';   
}

console.log(tempArray);

http://jsfiddle.net/zgg79wfa/1/

You can achieve this without jQuery by using the .filter() method:

 var json = [{ "itemId": "1", "prodTitle": "abc", }, { "itemId": "2", "prodTitle": "def", }, { "itemId": "", "prodTitle": "", }]; console.log( json ); var tempArray = json.filter( function( el ) { return el.itemId && el.prodTitle; }); console.log( tempArray ); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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