我有一个从 C# 模型填充的数组数组:
var AllObjectsArray = [];
@foreach(var Cobject in Model.ObjectList)
{
@:AllObjectsArray.push(new Array("@Cobject.Name", "@Cobject.Value", "@Cobject.Keyword"));
}
var SelectedObjects = [];
uniqueobj.forEach(function (element) {
SelectedObjects.push(new Array(AllObjectsArray.filter(elem => elem[0] === element))); //makes array of selected objects with their values(name,value,keyword)
});
我正在尝试获取每个内部数组的第二个参数,并将其添加到包含这些元素的新数组中,如下所示:
var ValuesArray = [];
for (i = 0; i < SelectedObjects.length; i++) {
ValuesArray.push(SelectedObjects[i][0]) //problem here i think
};
不幸的是,在:
alert(ValuesArray + " : " + SelectedObjects);
我一无所获ValuesArray
.SelectedObjects
的其他数据正确加载,每个内部数组正确返回所有三个参数,因此它不为空。我一定是迭代错了。
编辑: 所以我更多信息,因为我不明白我需要什么。
假设 SelectedObjects[] 包含两条记录,如下所示:
{ name1, number1, keyword1}
{ name2, number2, keyword2}
现在,我需要的是用nane1
和name2
填充ValuesArray
。 这就是为什么我猜测我应该遍历SelectedObjects
并SelectedObject[i][0]
在我的猜测中i
代表内部数组索引,1
代表该内部数组的数字部分。请纠正我,让我朝着正确的方向前进,因为我正在从 C# 编码方式中思考如何围绕 js 进行思考。
然而,SelectedObject[i][0]给了我所有具有所有三个属性(name,value和关键字)的SelectedObject,我应该只得到内部数组中name的一部分。
这是怎么回事?
希望这次我能更好地解释自己。
编辑:
我想我知道为什么会发生这种情况,因为 SelectedObjects[i][0] 返回整个内部数组,而 SelectedObjects[i][1] 给出 null,这肯定意味着 SelectedObjects 不是数组数组,而是用逗号连接的字符串数组。
有没有办法解决这个问题?SHould 我以不同的方式创建数组数组,或者可能在逗号上拆分内部对象并迭代返回的字符串?
首先,SelectedObjects[i][1] 应该是 SelectedObjects[i][0]。 但据我了解,你想要这样的东西
var ValuesArray = [];
for (let i = 0; i < SelectedObjects.length; i++) {
for(let j = 0; j <SelectedObjects[i].length; j++) {
ValuesArray.push(SelectedObjects[i][j]);
}
};
在此片段中
var ValuesArray = [];
for (i = 0; i < SelectedObjects.length; i++) {
ValuesArray.push(SelectedObjects[i][1]) //problem here i think
};
您直接指向选定对象中的第二项[i]
也许你想要第一个索引,0