在数组中搜索字符串/值并替换数组中的字符串/值

时间:2014-08-05 14:06:47

标签: javascript jquery arrays angularjs underscore.js

尝试在给定数组中查找字符串/值并将其替换为新值; 更像是切换排序值并将其推送到数组;

DEMO

值需要检查点击;

if(_.contains($scope.sortList, sortText)){
    console.log("exist");
  } else{
    console.log("doesnt exist");
  }

2 个答案:

答案 0 :(得分:1)

嘿兄弟你会搜索以前的问题,请查看下面的小提琴它对数组字符串/值进行排序现在需要使用下划线来查找元素使用包含。 [小提琴] [1]希望这会对你有所帮助。一切顺利。

[1]: http://jsfiddle.net/mkdskd/78FVh/1/

答案 1 :(得分:0)

我会做以下事情:

创建一个包含所有可排序字段的对象,保持其状态:

var fields = {
  name: null,   // null, 'asc', or 'desc'
  age: null,    // null, 'asc', or 'desc'
  gender: null  // null, 'asc', or 'desc'
};

创建toggle函数:

function toggle(fieldName) {
  switch (fields[fieldName]) {
    case 'asc':  fields[fieldName] = 'desc'; break;
    case 'desc': fields[fieldName] = null;   break;
    default:     fields[fieldName] = 'asc';  break;
  }
}

并创建一个函数以从fields对象生成排序对象:

function getSorting() {
  var sort = [];
  for (var fieldName in fields) {
    var value = fields[fieldName];
    if (value != null) {
      sort.push(fieldName + ':' + value);
    }
  }

  return {sort: sort};
}

现在,例如,点击按钮'性别',您可以调用toggle('gender'),然后通过getSorting()获取新的排序对象。

或者,您可以通过简单地循环遍历数组中的现有排序值:

function removeFieldsStartingWith(array, str) {
  var i = 0;
  while (i < array.length) {
    if (array[i].indexOf(str) === 0) {
      array.splice(i, 1);
    }
    else {
      i++;
    }
  }
}

并像removeFieldsStartingWith(myArray, 'gender:')

一样使用它