javascript - 为什么我在这个三元赋值中总是得到 null?

标签 javascript arrays reactjs

我有一个带有 fetch 的函数:

getHistory(){
        console.log("Log antes del fetch de customer id");
        console.log(this.state.customer._id);
        fetch(
            DOMAIN+'/api/orders/customer/'+this.state.customer._id, {
                method: 'get',
                dataType: 'json',
                headers: {
                    'Accept': 'application/json',
                    'Content-Type': 'application/json',
                    'Authorization':'Bearer '+this.props.token
                }
            })
            .then((response) =>
            {
                return response.json();
            })
            .then((responseData) => {
                responseData.map(function (v) {
                    v.orderStatusChange = v.order ? v.order.orderStatusChange : null  })
                this.setState({orders:responseData})
                console.log("Log del responseData");
                console.log(responseData);

            })
            .catch(function() {
                console.log("error");
            });
    }

我得到了一个带有responseData的对象数组,它看起来像THIS 。我想访问 orderStatusChange 并获取状态。我已经能够从数组中获取其他值,例如订单 id 或创建日期,将数组的键直接放入必须打印的表中:

const HISTORY_TABLE_COLUMNS = [
    {
        key: '_id',
        label: 'Número de pedido'
    }, {
        key: 'created',
        label: 'Fecha del pedido'
    }, {
        key: 'status',
        label: 'Estado'
    }
]; 

现在看起来像这样:TABLE

但是由于 status 位于主数组内的另一个数组中,我认为我可以映射它以获取它,如函数中所示:

responseData.map(function (v) {
                v.orderStatusChange = v.order ? v.order.orderStatusChange : null  })

但是 orderStatusChange 不断获取 null 作为值。

如何获取状态值?

编辑:添加 Json 对象的一部分而不是捕获:

(29) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
0:
created:"2017-07-06T15:58:07.958Z"
customer:"59561f3f1d178e1966142ad7"
lastModified:"2017-07-06T15:58:07.958Z"
orderList:[]
orderStatusChange:Array(1)
0:{status: "5", comments: "Creado en back antes de pagar", _id: "595e5e0f60fbf65149916b7c", created: "2017-07-06T15:58:07.958Z"}
length:1
__proto__:Array(0)
shop:"59108159bc3fc645704ba508"
totalAmount:4000
__v:0
_id:"595e5e0f60fbf65149916b7b"
__proto__:Object

最佳答案

查看您的 json,您的对象中没有 order 属性。 这就是为什么您总是进入三元运算符的 false 部分。

与您的问题无关,但没有任何消费者关注的 .map 看起来毫无用处。

关于javascript - 为什么我在这个三元赋值中总是得到 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45631298/

相关文章:

c# - 对 double 组中的所有元素进行四舍五入

vb.net - 如何在VB.Net中将Array转换为ArrayList

javascript - 嵌套 React.js 组件

javascript - typescript :空数组的长度不为零

javascript - 即使在 Object.keys() 上操作时,array.sort() 是否就位?

php - Javascript 警报 php 结果

javascript - bind 如何自动将事件参数传递给事件处理程序?

javascript - ReactJS 和 Firebase - 订购数据

javascript - Node.js 中的 Http.request

javascript - 阴影框外的下拉菜单