二维数组 - arr[i][0] 给出错误的结果 - JavaScript ASP.NET C#

Posted

技术标签:

【中文标题】二维数组 - arr[i][0] 给出错误的结果 - JavaScript ASP.NET C#【英文标题】:Two Dimensional Array - arr[i][0] Gives Wrong Result - JavaScript ASP.NET C# 【发布时间】:2019-08-30 14:23:45 【问题描述】:

我有一个从 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

现在,我需要用nane1name2 填充ValuesArray。 这就是为什么我猜测我应该遍历SelectedObjects 并得到SelectedObject[i][0],在我的猜测中,i 代表内部数组索引,1 代表该内部数组的数字部分。请纠正我并让我朝着正确的方向前进,因为我正在从 C# 编码方式猜测如何将我的头包裹在 js 周围。

但是 SelectedObject[i][0] 给了我所有 SelectedObject 的所有三个属性(名称、值和关键字),我应该只获得内部数组的名称部分。

这里发生了什么?

希望这次我能更好地解释自己。

编辑:

我想我知道为什么会这样,因为 SelectedObjects[i][0] 返回整个内部数组,而 SelectedObjects[i][1] 给出 null,这一定意味着 SelectedObjects 不是数组数组,而是与字符串连接的数组逗号。

有没有办法解决这个问题?我应该以不同的方式创建数组数组,还是用逗号分割内部对象并遍历返回的字符串?

【问题讨论】:

您在浏览器控制台中是否发现任何错误? uniqueobj 基本上是一个数组,其中包含匹配用户选择的第一个数组对象。 【参考方案1】:

首先,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]);
    
;

【讨论】:

我放了 [i][[1] 因为我试图进入 array[i] 并获取它的 [1] 值而不是整个对象。我来自 c#,对我们语法完全陌生 你的解决方案会让我得到每个内部数组的所有参数,对吧?我不需要所有的“j”值,只需要“j=1” 就是这样,要访问第二个属性,我必须编写 SelectedObjects[i][j][1]。谢谢彼得【参考方案2】:

在这个sn-p中

var ValuesArray = [];
for (i = 0; i < SelectedObjects.length; i++) 
   ValuesArray.push(SelectedObjects[i][1]) //problem here i think
;

您直接指向 SelectedObjects[i] 中的第二个

也许你想要第一个索引,0

【讨论】:

这就是我想要的,但我没有得到那个值,而是用逗号分隔 4 次,例如:,, 而不是 5,4,3,5 如果我输入 0 而不是 1,我会得到带有 [i][0]、[i][1] 和 [i][2] 的整个 [i] 对象。我不希望这样,我无法理解为什么 [i][1] 没有结果 我想也许你渲染到数组中很糟糕。您实际上是 3 级数组深度,您的参考可能需要看起来像 [i][0][0] 或其他东西 是的,我也这么认为。我正在尝试这样做,但没有运气 @differerntDure 请看我的编辑,我认为 SelectedObjects 不是数组数组而是一维数组。这可以解释为什么 SelectedObjects[i][0] 返回完整的内部数组而 SelectedObjects[i][1] 什么都不返回,因为我认为是一个内部数组,它只是一个由逗号分隔的三个元素组成的对象。

以上是关于二维数组 - arr[i][0] 给出错误的结果 - JavaScript ASP.NET C#的主要内容,如果未能解决你的问题,请参考以下文章

php sql条件参数为数组

ANSI C遍历二维数组指针地址

js将一维数组转化为二维数组

二维数组遍历

返回二维数组最大子数组的和

C语言二维数组 int arr[2][3]