二维数组 - arr[i][0] 给出错误结果 - JavaScript ASP.NET C#
Two Dimensional Array - arr[i][0] Gives Wrong Result - JavaScript ASP.NET C#
我有一个从 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] 为我提供了所有具有所有三个属性(名称、值和关键字)的 SelectedObject,我应该只获取内部数组的名称部分。
这里发生了什么?
希望这次我能更好地解释自己。
编辑:
我想我知道为什么会这样,因为 SelectedObjects[i][0] returns 整个内部数组和 SelectedObjects[i][1] 给出 null,这一定意味着 SelectedObjects 不是数组的数组但是用逗号连接的字符串数组。
有没有办法解决这个问题?我应该以不同的方式创建数组数组,还是应该在逗号上拆分内部对象并通过返回的字符串迭代?
首先,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
};
您正直接指向 SelectedObjects[i]
中的 second 项
也许你想要第一个索引,0
我有一个从 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] 为我提供了所有具有所有三个属性(名称、值和关键字)的 SelectedObject,我应该只获取内部数组的名称部分。
这里发生了什么?
希望这次我能更好地解释自己。
编辑:
我想我知道为什么会这样,因为 SelectedObjects[i][0] returns 整个内部数组和 SelectedObjects[i][1] 给出 null,这一定意味着 SelectedObjects 不是数组的数组但是用逗号连接的字符串数组。
有没有办法解决这个问题?我应该以不同的方式创建数组数组,还是应该在逗号上拆分内部对象并通过返回的字符串迭代?
首先,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
};
您正直接指向 SelectedObjects[i]
中的 second 项也许你想要第一个索引,0