首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >filtered.push不是一个函数

filtered.push不是一个函数
EN

Stack Overflow用户
提问于 2018-04-24 10:24:13
回答 2查看 289关注 0票数 0

我使用的是约简函数,而控制台上出现错误的原因如下:

(索引):77 TypeError: filtered.push不是一个函数

DispatchedNumber在映射到Lines数组之前应该存在。

代码语言:javascript
复制
function payload(order) {
  return {
    OrderId: order.ORDERID,
    Lines: order.ITEMS.reduce(function(filtered, item) {
      if (item.DispatchedNumber != undefined) {
        var newItem = {
          Qty: item.Qty,
          QtyShipped: item.DispatchedNumber
        }

        filtered.push(newItem);
      }

      return filtered;
    })
  }
}

test = payload({
  "ORDERID": 1233,
  "ITEMS": [
    { Qty: 123, DispatchedNumber: 111 },
    { Qty: 111 },
    { Qty: 444, DispatchedNumber: 555 },
    { Qty: 443, DispatchedNumber: 323 }
  ]
})

用法:

代码语言:javascript
复制
console.log(JSON.stringify(test, null, 2));

示例:https://jsfiddle.net/j6097w9d/2/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-24 10:25:48

还原函数中没有为累加器指定初始值。

请更新以下内容

代码语言:javascript
复制
order.ITEMS.reduce(function(filtered, item) {
      if (item.DispatchedNumber != undefined) {
        var newItem = {
          Qty: item.Qty,
          QtyShipped: item.DispatchedNumber
        }

        filtered.push(newItem);
      }

      return filtered;
    }, []) // add the empty array (initial value of accumulator)

供参考,Array.reduce

票数 2
EN

Stack Overflow用户

发布于 2018-04-24 10:26:26

减少语法

代码语言:javascript
复制
arr.reduce(callback[, initialValue])

您需要将filtered变量初始化为reduce()函数。

演示

代码语言:javascript
复制
function payload(order) {
  return {
    OrderId: order.ORDERID,
    Lines: order.ITEMS.reduce(function(filtered, item) {
      if (item.DispatchedNumber != undefined) {
        var newItem = {
          Qty: item.Qty,
          QtyShipped: item.DispatchedNumber
        }
        
        filtered.push(newItem);
      }
      
      return filtered;
    },[])
  }
}

var test = payload({
  "ORDERID": 1233,
  "ITEMS": [{ Qty: 123, DispatchedNumber: 111 },{ Qty: 111 },{ Qty: 444, DispatchedNumber: 555 },{ Qty: 443, DispatchedNumber: 323 }]
})


console.log(JSON.stringify(test, null, 2));
代码语言:javascript
复制
.as-console-wrapper {  max-height: 100% !important;  top: 0;}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49999281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档