【问题标题】:How to Push the values in the array, using jquery如何使用 jquery 推送数组中的值
【发布时间】:2015-08-25 12:29:39
【问题描述】:

尝试将值从现有数组对象推送到临时数组中。这里正在验证我现有对象中的值是否为空,然后将其推送到临时数组中。

但目前这是我得到的输出:["0","abc"]

预期的输出应该是[{"0":"abc"},{"1":"def"}]

将值推入临时数组后,我需要将其绑定到我的 html 列表。

这是尝试过的。

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

【问题讨论】:

  • [{"0","abc"},{"1","def"}...] 不是有效的 javascript 对象。你的意思是[{"0":"abc"},{"1":"def"}...]
  • 对不起,错字
  • [{"0":"abc"},{"1":"def"}...] 作为数据结构没有意义。

标签: javascript jquery arrays


【解决方案1】:

你有很多错误,这里是对的一个

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

你的错误

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}
}

【讨论】:

    【解决方案2】:

    另一个使用Array.filter 的选项也使它可以链接。但是 for 循环会更快,这取决于您是否需要链接能力,我发现它有时非常强大。

    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/

    【讨论】:

      【解决方案3】:

      您可以在不使用 jQuery 的情况下使用 .filter() 方法实现此目的:

      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 );

      【讨论】:

        猜你喜欢
        • 2016-07-07
        • 1970-01-01
        • 1970-01-01
        • 2011-06-17
        • 2020-02-21
        • 2013-11-20
        • 1970-01-01
        • 2013-04-05
        • 2017-04-12
        相关资源
        最近更新 更多