不可变的 JS - 将值提取到数组
Posted
技术标签:
【中文标题】不可变的 JS - 将值提取到数组【英文标题】:Immutable JS - Extracting values to array 【发布时间】:2021-05-28 02:13:49 【问题描述】:我的 Redux 商店有一条记录,如下所示
const fruitRecord = Immutable.fromJS(
'8a6sd5v8a6s7fv5': id: '1234', fruit: 'banana',
'hvth1jk34v23hj2': id: '5678', fruit: 'apple'
);
如果我控制台记录我得到的记录
console.log(fruitRecord.toArray())
// [Array(2), Array(2)]
// 0: ["8a6sd5v8a6s7fv5", FruitRecord]
// 1: ["hvth1jk34v23hj2", FruitRecord]
我对水果 ID(本例中为 1234
和 5678
)感兴趣,并将它们放入数组中。
这是我目前正在尝试做的事情:
const fruitName = fruitRecord.map(f =>
console.log(f.get('id')) // prints 1234 and 5678
return f.get('id')
)
console.log(fruitName)
// returns a Map
但问题是当尝试使用fruitIds
时,我得到了一个类型对象。我希望这是一个数组['1234', '5678']
如何更改我的代码以获取 id 数组?
** 编辑 ** 将示例更改为可重现
【问题讨论】:
【参考方案1】:实际上数组是对象类型。例如,如果您记录数组的类型,您将得到“对象”
例子:
const array = [1,2,3],
console.log(typeof array); // this will print object.
我认为您应该尝试打印出“fruitIds”。它将是一个数组的形式。
另一种方法可以如下。
const fruitArray = [];
fruitRecord.map(f =>
console.log(f.get('id')) // prints 1234 and 5678
fruitArray.push(f.get('id')); // or frruitArray.push(f.id);
);
【讨论】:
有趣。我不知道。我顺便编辑了示例代码 您可以在 map 函数之前初始化一个数组。然后从地图函数内部推送 id。这可能是一个很好的方法。以上是关于不可变的 JS - 将值提取到数组的主要内容,如果未能解决你的问题,请参考以下文章