【问题标题】:Array Not Indexing Correctly数组未正确索引
【发布时间】:2019-04-13 19:41:56
【问题描述】:

request_people 原来是'254,,one,one,one,99,,one,one,ORCHARD,one,ON,one/255,254,TWO,TWO,TWO,99' 被转换为:

request_people
    array(2): {
       [0]:  array(13): {
          [0]:  string(3): "254"
          [1]:  string(0): ""
          [2]:  string(3): "one"
          [3]:  string(3): "one"
          [4]:  string(3): "one"
          [5]:  string(2): "99"
          [6]:  string(0): ""
          [7]:  string(3): "one"
          [8]:  string(3): "one"
          [9]:  string(7): "ORCHARD"
          [10]:  string(3): "one"
          [11]:  string(2): "ON"
          [12]:  string(3): "one"
       }
       [1]:  array(6): {
          [0]:  string(3): "255"
          [1]:  string(3): "254"
          [2]:  string(3): "TWO"
          [3]:  string(3): "TWO"
          [4]:  string(3): "TWO"
          [5]:  string(2): "99"
       }
    }

我想通过将索引的第一个元素移动为实际索引来重新定义数组。

所以输出应该是:

new_request_people
    array(2): {
       [254]:  array(12): {
          [0]:  string(0): ""
          [1]:  string(3): "one"
          [2]:  string(3): "one"
          [3]:  string(3): "one"
          [4]:  string(2): "99"
          [5]:  string(0): ""
          [6]:  string(3): "one"
          [7]:  string(3): "one"
          [8]:  string(7): "ORCHARD"
          [9]:  string(3): "one"
          [10]:  string(2): "ON"
          [11]:  string(3): "one"
       }
       [255]:  array(5): {
          [0]:  string(3): "254"
          [1]:  string(3): "TWO"
          [2]:  string(3): "TWO"
          [3]:  string(3): "TWO"
          [4]:  string(2): "99"
       }
    }

我有以下代码:

request_people = request_people.split('/');
for (i = 0; i < request_people.length; i++)
{
    request_people[i] = request_people[i].split(',');
}
//dump(request_people, 'alert');
var new_request_people = new Array();
for (i = 0; i < request_people.length; i++)
{

    var key = parseInt(request_people[i][0]);
    new_request_people[key] = request_people[i];
    dump(new_request_people, 'alert');
}

附带说明一下,它似乎使数组的大小与给定值 (69) 相同,并在最后添加了“测试”。

【问题讨论】:

  • 请加request_people
  • array(1): { [0]: array(13): { [0]: string(3): "254" [1]: string(0): "" [2] :字符串(3):“一”[3]:字符串(3):“一”[4]:字符串(3):“一”[5]:字符串(2):“99”[6]:字符串(0): "" [7]: string(3): "one" [8]: string(3): "one" [9]: string(7): "ORCHARD" [10]: string(3) :“一”[11]:字符串(2):“开”[12]:字符串(3):“一”}}
  • 请在问题中添加文字符号的值。
  • 请在问题中添加输入样本、预期输出和清晰的问题陈述。 “所以 [0][0] = 69。我希望它变成 [69] = 不管是 [0]” 没有意义
  • 更新了问题。

标签: javascript arrays indexing key


【解决方案1】:

您可以构建一个新数组并将第一个值作为其余内部数组的索引。

结果是一个包含两个元素的稀疏数组。

var data = '254,,one,one,one,99,,one,one,ORCHARD,one,ON,one/255,254,TWO,TWO,TWO,99',
    result = data
        .split('/')
        .map(s => s.split(','))
        .reduce((r, [index, ...array]) => (r[index] = array, r), []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

  • 我不知道如何用我目前在问题中定义为 request_people 的内容来实现这一点('/' 和 ',' 的拆分)。
  • 我不知道你有什么,而且你没有在问题中包含数据。请在问题中添加相关部分。
  • 更新了问题。数据是从网站上刮下来的,我在问题中包含了这种格式。
  • 不确定这是否有效,因为脚本环境 (iMacros) 说变量未定义。但它适用于 java 测试人员。谢谢。我最终没有使用它,但希望可以。
猜你喜欢
  • 1970-01-01
  • 2020-04-04
  • 2015-08-20
  • 2011-06-28
  • 1970-01-01
  • 2015-12-05
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
相关资源
最近更新 更多