te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - FreeCodeCamp: I am stuck on "Record Collection" - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - FreeCodeCamp: I am stuck on "Record Collection" - Stack Overflow

programmeradmin2浏览0评论

I am doing the Freecodecamp tutorial, but i'm stuck here. Wrote the following code but it steel doesn't work:

function updateRecords(id, prop, value) {
  if(value!==""){
  if(prop==="tracks")
  collection[id][prop].push(value);
    else
      collection[id][prop] =value;
  }else 
    delete collection[id][prop];
  return collection;
}

please can someone help me!!!

I am doing the Freecodecamp tutorial, but i'm stuck here. Wrote the following code but it steel doesn't work:

function updateRecords(id, prop, value) {
  if(value!==""){
  if(prop==="tracks")
  collection[id][prop].push(value);
    else
      collection[id][prop] =value;
  }else 
    delete collection[id][prop];
  return collection;
}

please can someone help me!!!

Share Improve this question asked Aug 15, 2016 at 11:23 hei_xhonihei_xhoni 511 gold badge1 silver badge5 bronze badges
Add a ment  | 

7 Answers 7

Reset to default 3

I've had a go at this problem. The solution below should work. I've added individual if statements on one line so that it is easier to follow. Let me know if you need any clarification.

function updateRecords(id, prop, value) {
  if      (prop === "tracks" && (!(collection[id]).tracks)) {collection[id].tracks = [];}
  if      (prop === "tracks" && value !== "")               {collection[id].tracks.push(value);}
  else if (prop !== "tracks" && value !== "")               {collection[id][prop] = value;}
  else if (value === "")                                    {delete collection[id][prop];}
  return collection;
}

Also, for future reference here is the description of the problem:

==========

You are given a JSON object representing a part of your musical album collection. Each album has several properties and a unique id number as its key. Not all albums have plete information.

Write a function which takes an album's id (like 2548), a property prop (like "artist" or "tracks"), and a value (like "Addicted to Love") to modify the data in this collection.

If prop isn't "tracks" and value isn't empty (""), update or set the value for that record album's property.

Your function must always return the entire collection object.

There are several rules for handling inplete data:

If prop is "tracks" but the album doesn't have a "tracks" property, create an empty array before adding the new value to the album's corresponding property.

If prop is "tracks" and value isn't empty (""), push the value onto the end of the album's existing tracks array.

If value is empty (""), delete the given prop property from the album.

===========

if you do the function with all if statements than it will also run.

Here it is:

function updateRecords(id, prop, value) {
    if (prop === "tracks" && (!(collection[id]).tracks)) {
        collection[id].tracks = [];
    }
    if (prop === "tracks" && value !== "") {
        collection[id].tracks.push(value);
    }
    if (prop !== "tracks" && value !== "") {
        collection[id][prop] = value;
    }
    if (value === "") {
        delete collection[id][prop];
    }
    return collection;
}

this is my answer :

function updateRecords(collection, id, prop, value) {
   if(value === "")
   {
     delete collection[id][prop];
   }
   else if(prop != "tracks" && value != ""){
     collection[id][prop] = value;
   }
   else if (prop === "tracks" ){
     if(value == "Free")
     {
       collection[id][prop[0]] = [1999];
     }
     else{
     collection[id][prop] = [value];
     }
   }
   return collection
}

You stuck at:

if(prop === "tracks")
    collection[id][prop].push(value);\\ It is happened when the collection has a property "tracks" if it doesn't else not happen, for exam they give a id = 5249 doesn't have "tracks". 

I thinks you should add:

if(collection[id].hasOwnProperty(prop)){ 
    collection[id][prop].push(value);
}else {
    collection[id][prop] = [];
    collection[id][prop].push(value);`enter code here`
}

after if(prop === "tracks").

Hopefully, it helps you solve this problem.

function updateRecords(records, id, prop, value) {
    if(value !== "") {
        if(prop === "tracks")
            records[id][prop].push(value);
        else
            records[id][prop] =value;
    } else 
        delete records[id][prop];
    return records;
}
// This is my solution
function updateRecords(records, id, prop, value) {
 if(prop !== 'tracks' && value !=='')
  records[id][prop] = value;
 if(prop === 'tracks' && records[id].hasOwnProperty(prop) == false ) {
  records[id][prop]=[]; 
  records[id][prop].push(value);
  }
  else if(prop === 'tracks' && value !=='')
    records[id][prop].push(value);
  if( value === '')
   delete records[id][prop];
  return records;
}

// Setup
const recordCollection = {
  2548: {
    albumTitle: 'Slippery When Wet',
    artist: 'Bon Jovi',
    tracks: ['Let It Rock', 'You Give Love a Bad Name']
  },
  2468: {
    albumTitle: '1999',
    artist: 'Prince',
    tracks: ['1999', 'Little Red Corvette']
  },
  1245: {
    artist: 'Robert Palmer',
    tracks: []
  },
  5439: {
    albumTitle: 'ABBA Gold'
  }
};

// Only change code below this line
function updateRecords(records, id, prop, value) {
  if (value.length === 0) {
    delete records[id][prop];
  }
  else if (prop === 'tracks' && (value.length !== 0)) {
    if (!records[id].hasOwnProperty(prop)) {
      records[id][prop] = [value];
    }
    else if (value.length === 0) {
      records[id][prop] = [value];
    }
    else{
      let song = records[id][prop];
      song.push(value);
    }
  }
  else if (value.length !== 0) {
    records[id][prop] = value;
  }
  return records;
}

updateRecords(recordCollection, 5439, 'artist', 'ABBA');
updateRecords(recordCollection, 5439, "tracks", "Take a Chance on Me");
updateRecords(recordCollection, 2548, "artist", "");
updateRecords(recordCollection, 1245, "tracks", "Addicted to Love");
updateRecords(recordCollection, 2468, "tracks", "Free");
updateRecords(recordCollection, 2548, "tracks", "");
updateRecords(recordCollection, 1245, "albumTitle", "Riptide")

console.log(recordCollection);

发布评论

评论列表(0)

  1. 暂无评论