如何访问数组中存在的值?我想我没有在内部传递数组?任何帮助或建议
var isExist = this.props.isFavorite(this.props.code);
console.log(isExist)
我有这个变量isExist,包含下面控制台的响应。
[]
client: [id: "LvR05w9v9xrC3r4V1W8g", exist: true]
length: 1
_proto_:Array(0)
如何访问阵列中存在的内容?当我尝试isExist [0] .exist时,出现错误。有帮助吗?
isExist.exist = Undefined
isExist[0].exist = TypeError: Cannot read property 'exist' of undefined
我在其中访问数据并将其推入阵列的最常用方法
export const isFavorite = (data) => dispatch => {
let exist = [];
var clientQuery = firebase.firestore().collection(path).where('client_id', '==', data);
clientQuery.get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
var data = [];
data.id = doc.id;
data.exist = doc.exists;
exist.push(data)
});
});
return exist;
}
答案 0 :(得分:1)
isFavorite
返回一个带有一个参数dispatch
并返回exist
数组的函数。您似乎使用了异步代码来填充exist
数组。因此,当该函数返回exist
时,将是一个空数组[]
。您需要继续使用Promise或使用await
。然后,您需要调用isFavorite
返回的函数。
如果this.props.isFavorite
和const isFavorite
不同,请添加this.props.isFavorite
的代码。
答案 1 :(得分:0)
您正在创建数组对象。然后是数组对象{data} []。因此,问题在于,数据实际上不仅是数组,而且还是对象。
尝试这样做。
var data;
data.id = doc.id;
data.exist = doc.exist;
exist.push(data);
现在,您将拥有将作为对象数组的数据。 然后从中进行迭代。
exist[0].id;
//or try
exist[0].data.id;
//Depends on how you implement your data.
答案 2 :(得分:0)
由于客户端数组不包含带有键和值的对象,所以我建议您尝试使用split()来处理索引数组,以获取id值并从数组中获取值,例如
喜欢
var isExist = this.props.isFavorite(this.props.code);
var id = isExist.client[0];
var exist = isExist.client[1];
var idValue = id ? id.split(': '): '';
console.log(idValue);
const existValue = exist ? exist.split(': '): false;
console.log(existValue);
这里更改数据= [];数据数组= {};对象
querySnapshot.forEach((doc) => {
var data = {};
data.id = doc.id;
data.exist = doc.exists;
exist.push(data)
});