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

Cannot read property 'slice' of undefined in jQuery

提问人:Afnan A. 提问时间:8/21/2019 最后编辑:Afnan A. 更新时间:8/21/2019 访问量:1904

问:

我正在使用数组中的函数。当数组值的前半部分具有相同的字符串时,它会显示此错误。 来自一个按钮,该按钮总是具有不同的值,即 , 。slice()$.each()$namequestion1question2

我尝试过当数组像然后函数工作正常时,但是当我推送更多以开头的值并希望删除这些值时,控制台中会显示错误。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);
    }

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

实际上,我想删除从$name

如果这是一个愚蠢的问题,我很抱歉。我知道我没有正确解释这个问题。

JavaScript jQuery 切片

评论

2赞 connexo 8/21/2019
我在这里找不到您使用 jQuery 而不是普通 Javascript 的单一原因。
0赞 efkah 8/21/2019
使用 jQuery 时,您可以通过索引到对象中来访问 vanilla HtmlElements:arr[0]
1赞 connexo 8/21/2019
@efkah 他没有使用jQuery来选择任何元素。就像一个完全不必要的额外复杂性层一样。
1赞 efkah 8/21/2019
此外,您可能希望在函数中使用$name: ' $.each($name, function(index, value) { ...' . @connexo我同意。
1赞 Jaydeep Mor 8/21/2019
@afnan 你正在通过,两者都是一样的。为什么?我认为不应该是一个数组。arr$name$name

答:

0赞 Ryan Nghiem 8/21/2019 #1

因为您在用于此数组时拼接了一个数组eacharr.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');

那么 variable 就是你期望的结果result

评论

0赞 Afnan A. 8/21/2019
这是一把工作小提琴......对于每个答案,都有刷新按钮,当您单击答案两次然后刷新它时,它将在控制台中显示切片错误。为什么?jsfiddle.net/afnan03/gsj9kych