无法读取jQuery中未定义的属性“切片”

时间:2019-08-21 07:30:58

标签: javascript jquery slice each

我在slice()数组中使用$.each()函数。当数组值的前一半具有相同的字符串时,它将显示此错误。 $name来自始终具有不同值(即question1question2)的按钮。

我试过当数组像var arr = ["question1Answer1", "question2Answer2"];时函数正常工作,但是当我推入以question2开头的更多值并且想要删除这些值而不是控制台中显示的上述错误时。

    var arr = ["question1Answer1", "question2Answer2", "question2Answer3"];
    refreshArrange = function($name) {

      $.each(arr, function(index, value) {
        var newStr = '';

        newStr = value.slice(0, 9);

        if(newStr == $name) {
          var ind = arr.indexOf(value);
          if (ind > -1) {
            arr.splice(ind, 1);
            console.log('working Ok');
          }

        }else {

        }

      });

      console.log(arr);
    }

我想删除数组的第二和第三值,因为$name的即将到来的值是question2。我正在拆分数组值,并将上半部分与$name进行比较并将其删除。但是会发生此错误。 我不知道问题出在哪里。

实际上,我要删除从$name的值开始的数组的值

对不起,这是一个愚蠢的问题。我知道我没有正确解释问题。

1 个答案:

答案 0 :(得分:0)

因为您在each阵列使用arr.splice(ind, 1);时拼接了一个阵列

您可以尝试我的代码:

var arr = ["question1Answer1", "question2Answer2", "question2Answer3"];
var refreshArrange = function($name) {
  var result = [];
  $.each(arr, function(index, value) {
    // var newStr2 = '';

    var newStr = value.slice(0, 9);
    // newStr2 = value.slice(0, 10);

    if(newStr == $name) {

    }else {
      result.push(value)
    }

  });

  console.log(result);
}

refreshArrange('question2');

然后result变量就是您期望的结果