Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 给定两个数组-contacts()&;Contacts Selected()-如何匹配两者?_Javascript_Json_Knockout.js - Fatal编程技术网

Javascript 给定两个数组-contacts()&;Contacts Selected()-如何匹配两者?

Javascript 给定两个数组-contacts()&;Contacts Selected()-如何匹配两者?,javascript,json,knockout.js,Javascript,Json,Knockout.js,我有两个阵列(contacts&contacts Selected),都具有以下类型的结构: { id: 1, name: bob }, { id: 213, name: Rob } 我正在使用KnockoutJS。如何遍历contacts()并针对每一行确定contacts selected数组中是否包含该行的ID?在KnockoutJS中,我有如下内容: userCardModel.contactsToShow = ko.dependentObservabl

我有两个阵列(contacts&contacts Selected),都具有以下类型的结构:

{
    id: 1,
    name: bob
},
{
    id: 213,
    name: Rob
}
我正在使用KnockoutJS。如何遍历contacts()并针对每一行确定contacts selected数组中是否包含该行的ID?在KnockoutJS中,我有如下内容:

userCardModel.contactsToShow = ko.dependentObservable(function () {      

        return ko.utils.arrayFilter(this.contacts(), function(contact) {
            return /////////////// LOGIC GOES HERE TO See if this contact.id() is contained in the contactsSelected() array
        });


}, userCardModel);

谢谢

好的,你可以这样做

var contactsSelectedLength = contacts.length;

for (var i = 0, contactsLength = contacts.length; i++) {
   var contact = contacts[i];
   for (var j = 0; j < contactsSelectedLength; j++) {
       var selectedContact = contactsSelected[j];
       if (contact.id == selectedContact.id) {
          // It is in there!
       }
   }
}
var contactsSelectedLength=contacts.length;
对于(var i=0,contactsLength=contacts.length;i++){
var触点=触点[i];
对于(var j=0;j
添加“contactsSelected”的ID作为对象的属性,以便使用“in”操作符或“hasOwnProperty”方法在比线性时间更好的时间内访问这些ID:

var getselectedds=函数(sel){
var len=sel.length,o={},i;
对于(i=0;i为真)
(在选定的EDID中为2);//=>false
选择Edids.hasOwnProperty(213);//=>true
选择Edids.hasOwnProperty(214);//=>false
var getSelectedIds = function(sel) {
  var len=sel.length, o={}, i;
  for (i=0; i<len; i++) {
    o[sel[i].id] = true;
  }
  return o;
};
var selectedIds = getSelectedIds(contactsSelected);
(1 in selectedIds); // => true
(2 in selectedIds); // => false
selectedIds.hasOwnProperty(213); // => true
selectedIds.hasOwnProperty(214); // => false