【问题标题】:How to return object if it contains a letter in JavaScript如果对象包含JavaScript中的字母,如何返回对象
【发布时间】:2014-09-29 22:26:59
【问题描述】:

我在这里绞尽脑汁,需要一些快速帮助。

我有以下 JSON 对象:

"product": {
    "diagnostics": null,
        "skus": [{
            "itemCode": "Q28988",
            "salesCode": "Q2898800",
            "listPrice": 22,
            "salePrice": 22,
            "numberOfBottles": 1,
            "salePricePerBottle": 22,
            "id": "esku580806",
            "vppApplier": false,
            "vppPrice": null,
            "vppDiscountPct": null
        }, {
            "itemCode": "C28988",
            "salesCode": "C2898800",
            "listPrice": 264,
            "salePrice": 264,
            "numberOfBottles": 12,
            "salePricePerBottle": 22,
            "id": "esku580811",
            "vppApplier": false,
            "vppPrice": null,
            "vppDiscountPct": null
        }],
            "id": "eprod440905",
}

我需要过滤 skus 数组,只返回以字母“Q”开头的 itemCode。我正在使用下划线和 JavaScript,这是我能得到的最接近的,但它似乎没有返回任何内容。

var codes = _.filter($scope.cb.recommendations, function(obj){
            var startLetter = obj.product.skus.slice(); 
            return startLetter[0] === 'Q';
        });

$scope.cb.recommendations 是 JSON 对象 - sn-p 在上面。非常感谢!

【问题讨论】:

  • 您不想查看“itemCode”字段,而不仅仅是 SKU 对象数组吗?
  • 是的,我知道 - 但不知道该怎么做?是吗? obj.product.skus[].itemCode - 但这似乎失败了
  • 什么是$scope.cb.recommendations?似乎您想要过滤obj.product.skus。您希望结果是那些具有以“Q”开头的itemCode 的 sku 元素,还是您想要一个项目代码数组?
  • 不清楚你想做什么。如果单个产品可以有很多 SKU,如果 任何 SKU 的商品代码以“Q”开头,您是否要退回该产品?

标签: javascript json underscore.js lodash


【解决方案1】:

您没有解释$scope.cb.recommendations 是什么,所以我将展示如何只为一种产品过滤skus 数组。诀窍是将第三个参数传递给_.filter,该参数在谓词函数内绑定到this

var codes = [];
_.filter(
    obj.product.skus,
    function(sku) {
        if (sku.itemCode[0] === 'Q') {
            this.push(sku.itemCode);
        }
    },
    codes
);

【讨论】:

    【解决方案2】:

    如果没有下划线并且可能只存在 1 个“Q-item”:

    function findQ(skus) {
      var len = skus.length; 
      while(len--) {
        if(skus[len].itemCode.indexOf('Q') === 0) 
            return skus[len];
      }
    }
    
    var item = findQ(json.product.skus);
    

    http://jsfiddle.net/8pb13cdj/

    【讨论】:

      猜你喜欢
      • 2020-11-13
      • 2017-07-15
      • 2011-03-28
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      • 2022-11-28
      相关资源
      最近更新 更多