在我的项目中,我必须将Javascript对象转换为名为 mapResults 的Map对象。经过一些转换(切出前两个值)之后,我现在想遍历此集合以使用以下语法呈现一些列表项。
问题是,我还有一个名为 resultsKey 的数组,该数组具有要用作每个列表项的{keys}的字符串。因此,可以说我的Map对象和我的strings数组如下:
Context mContext;
ArrayList<String> nameList;
ArrayList<String> scoreList;
public ScoreRecViewAdapter (Context context, ArrayList<String> nameList, ArrayList<String> scoreList) {
this.mContext = context;
this.nameList = nameList;
this.scoreList = scoreList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(mContext).inflate(R.layout.rec_menu,parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.nameView.setText(nameList.get(position));
holder.scoreView.setText(scoreList.get(position));
}
@Override
public int getItemCount() {
return nameList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView nameView;
TextView scoreView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
nameView = itemView.findViewById(R.id.textViewName);
scoreView = itemView.findViewById(R.id.textViewScore);
}
}
}
现在,我想遍历两个集合以获取所需的列表项输出为:
列表项的每个键都取自我的resultsKey数组,每个值都取自我的mapResults对象。两个集合的长度/大小相同。
我知道,如果我有一个Object对象(将其命名为 objectResults )而不是Map对象,则可以通过在Object上调用Object.keys(),然后调用.map来实现此目的()或forEach()放在结果数组上(我们称其为 objectResultsKeys ),如下所示:
mapResults =
0: gameStatus -> "You Won!"
1: difficulty -> "Intermediate"
2: movesCount -> 13
resultsKey = [
"Final result",
"Level",
"Number of movements",
]
这里的事情是,如果遇到这种情况,我将能够使用.map()函数提供的 index 参数来访问resultsKey字符串数组并获取我想要的值。但是,对于iterating over Map objects而言,却没有这样的事情。
所以我想知道的是,是否有任何解决方案可以为我提供索引值,并可以在迭代Map对象时使用它来访问字符串数组。或者,如果还有其他解决方案可以实现与我所解释的结果类似的结果。我只能在此解决方案中使用Map对象。
答案 0 :(得分:1)
您可以直接去柜台
(\d)(\D*)(?=(\d))
或者您将条目转换为数组:
let index = 0;
for(const [key, value] of map.entries()) {
// ...
index++;
}
但是实际上,由于地图是按插入时间排序的,所以我不会依赖于地图的顺序。