javascript - 当ID在对象外部时如何将其移动到对象内部?

标签 javascript arrays object

我有一个数组,里面有一些对象。每个对象在其外部都有一个 ID,但我想将该 ID 插入对象内部。

这是数组:

'DISCOUNTS2: ', [ { id: 'discount1',
                         │ data:
                         │ { food_description: 'kifle me mermelad dhe nutella',
                         │ time: '22:00',
                         │ price: '1',
                         │ amount: 4,
                         │ food_name: 'kifle',
                         │ rest_id: '1' } },
                      { id: 'ai34Lyk9uXtpGDcCKfqa',
                         │ data:
                         │ { food_description: 'fsdfdsfdsf',
                         │ time: '345345',
                         │ price: '6',
                         │ amount: 4,
                         │ food_name: 'sdsddsf',
                         │ rest_id: '5' } },
                      { id: 'discount3',
                         │ data:
                         │ { food_description: 'torte me dredheza',
                         │ time: '18:00',
                         │ price: '3',
                         │ amount: 5,
                         │ food_name: 'torte',
                         │ rest_id: 'Aura1' } },
                      { id: 'discount2',
                         │ data:
                         │ { food_description: 'byrek me mish dhe djath',
                         │ time: '20:00',
                         │ price: '0.50',
                         │ amount: 6,
                         │ food_name: 'byrek',
                         └ rest_id: 'jeta1' } } ]

这是我在数组中插入数据的代码:

   var ref = firebase.firestore().collection('discounts')
                .orderBy('rest_id')
                .limit(this.state.limit)
            ref.onSnapshot((querySnapshot => {
                var discounts = querySnapshot.docs.map(doc => { return { id: doc.id, data: doc.data() } });
                var lastVisibleDiscount = discounts[discounts.length - 1].rest_id;
                this.setState({
                    discounts: discounts,
                    lastVisibleDiscount: lastVisibleDiscount,
                    loading: false,
                });
            }));

最佳答案

在您的代码中,只需在获取时添加id。替换为:

var discounts = querySnapshot.docs.map(doc => { return { id: doc.id, data: doc.data() } });

用这个:

var discounts = querySnapshot.docs.map(doc => ({ id: doc.id, ...doc.data() }));

请注意,您将拥有一个更扁平的结构。不再有具有 iddata 属性的包装对象。该数组将立即包含数据对象,包括 id 属性。

关于javascript - 当ID在对象外部时如何将其移动到对象内部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59513682/

相关文章:

JavaScript 变量不会随着 var++ 增加

javascript - 在 dropzonejs 中预加载图像后,图像预览(缩略图)不显示

c - C 中的基本数组用法?

Java:为什么我不能在 main 之外调用这个方法?

javascript - 为什么使用窗口变量查找索引时出现错误?

javascript - 在 Internet Explorer 9 中禁用 F5

c - 如何在 C 中初始化双指针? (指针数组)

java - 我正在尝试找到字符串的反转

javascript - 循环对象以仅获取唯一键

java - 在 Java 中什么时候将长度用作方法,什么时候用作属性?