【问题标题】:How to get value from multidimensional array and put it into comparison in javascript?如何从多维数组中获取值并在javascript中进行比较?
【发布时间】:2013-03-14 20:01:01
【问题描述】:

我遇到了一个问题,不知道如何正确解决。

我有一个多维数组,我想从这个数组中获取某个值并将其放入新数组。请参见下面的示例:

var myArr = [];
var extArr = [{ name:"john", id:1 }, { name: "bill", id: 2 }, ... , { name: "john", id: N }, ... ];

$.each(extArr, function(key, val){
    if (  ...  ) { // <-- I need a condition here to prevent "name" repetition
        myArr.push({ name: val.name, id: val.id });
    } else {
        // do nothing
    }
});

我需要找到条件以防止将相同名称推入 myArr。例如,我不想在 myArr 中有两个 johns 或多个 bill

我能想到的就是为 myArr 启动一个新的 $.each 循环,如下所示:

$.each(extArr, function(key, val){
    var checkcheck;
    $.each(myArr, function(key, name){
       if ( val.name == name.name ) {
           checkcheck = false;
       } else {
           checkcheck = true;
       }
    }
    if (  checkcheck == false  ) {
        myArr.push({ name: val.name, id: val.id });
    } else {
        // do nothing
    }
});

但我确信必须有一个更智能的解决方案来解决这个问题。 请帮我找到它...

【问题讨论】:

  • 请在发布问题之前确定您要问的内容。您的编辑从根本上改变了解决方案。
  • 对不起......我真的很难在脑海中形成所有这些东西。相信我,我现在正在全力以赴!

标签: javascript jquery multidimensional-array


【解决方案1】:

您可以使用$.inArray 来检查该值是否已经存在:

$.each(extArr, function(key, val){
    if ( $.inArray(val.name, myArr) == -1) 
         myArr.push(val.name);
});

【讨论】:

  • 你说得对……我知道$.inArray 的东西,我看到了你的回复,我明白我在这个问题上犯了一个错误。 myArr 也是多维的。现在我已经修好了。请检查
  • 现在您仍然有一个常规数组,但它包含对象,您需要迭代每个对象并获取名称值,并检查它是否与当前名称等匹配。 '已经在做。
  • 是的,它确实有效,但我只是想检查是否有其他解决方案可以做到这一点?例如,如果extArr 是 1000 个项目,myArr 也是 1000 个项目......这是一个 1000000 值检查......我不确定它是否很酷
猜你喜欢
  • 1970-01-01
  • 2012-05-03
  • 2021-09-04
  • 2019-08-15
  • 2019-06-27
  • 2017-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多