我目前正在使用一种方法来尝试过滤一些数组,该方法几乎可以正常工作,但是我似乎无法访问确切的值-
我打电话并将每个返回的数组添加到更大的数组中,然后将为这些数组分配一个productId以及一些数据,我将使用以下方法附加productId:
<TextInput
multiline = {true}
style={{ padding: 10,height: 45,}}
numberOfLines = {2}
underlineColorAndroid = {Colors.tintColor}
/>
不幸的是,这将新对象添加到数组中,这意味着除非productId位于每个数组的第一个对象中,否则下面的函数将不起作用:
data.push({'productId': product.id});
我需要做的是将数组过滤到与productId和ID匹配的子数组,并且该子数组还具有某些数据字段(例如“ name”)-因此它会检查名称是否为空。
数据集看起来像这样(子数组的数组)
let matchedArray = data.flatMap(arr => arr.filter(obj => obj.productId == id))
如您所见,productId已附加到数组中,但现在无法使用我的过滤器方法,我需要过滤具有匹配ID的正确数组,并且至少还存在一个字段。我要么需要更改productId的手动添加方式,要么更改filter方法?
非常感谢您能提供帮助
答案 0 :(得分:1)
如果您要filter
所有具有some
对象且其productId
等于给定值的数组:
let data = [[],[],[],[],[],[],[],[],[{"id":"123","name":"africa soul 2019","startDate":null,"endDate":null,"country":null,"city":null,"type":"Event","members":null},{"productId":"12345"}],[],[],[],[],[],[],[],[],[],[],[]],
id = "12345";
let filtered = data.filter(arr => arr.some(a => a.productId === id))
console.log(filtered)
如果要获得第一场比赛,请使用find
代替filter